這篇文章將為大家詳細講解有關python為什么沒有函數重載,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
1、當我們定義多個同名函數時,后面的函數總是覆蓋前面的函數。
所以在一個命名空間里,每個函數名只會有一個注冊項。
2、當程序運行時,如果遇到另一個同名函數,會更新局部命名空間中的注冊項目。
從而消除兩個函數共存的可能性。
所以Python不支持函數重載。這是創建語言時的設計決策,但并不妨礙我們實現。
注意:這里說Python不支持函數重載,這意味著Python不使用語法糖。使用functools庫的singledispatch裝飾,Python還可以實現函數重載。這是原作者在文末注釋中特別提到的。
通過調用locals()和globals()函數,可以看到Python的命名空間是什么,分別返回局部和全球命名空間。
def area(radius): return 3.14 * radius ** 2 >>> locals() { ... 'area': <function area at 0x10476a440>, ... }
定義一個函數后,再調用locals()函數,我們會看到它返回一個字典,包括定義在局部命名空間的所有變量。字典鍵是變量的名稱,值是變量的引用/值。
關于“python為什么沒有函數重載”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。