python中的過載
阿新 • • 發佈:2018-12-14
在一些靜態語言中,大都存在有一個過載的概念。這是在OOP(面對物件程式設計)中一個必不可少的一個行為。
所謂過載,就是多個相同函式名的函式,根據傳入的引數個數,引數型別而執行不同的功能。所以函式過載實質上是為了解決程式設計中引數可變不統一的問題。
python 中的過載
在python中,具有過載的思想卻沒有過載的概念。所以有的人說python這麼語言並不支援函式過載,有的人說python具有過載功能。實際上python程式設計中具有過載的目的缺無過載的行為,或者說是python並不需要過載!
python是一門動態語言,不需要宣告變數型別,函式中可以接受任何型別的引數也就無法根據引數型別來支援過載,python沒有必要去考慮引數的型別問題,這些都可以在函式內部判斷處理,並無必要去在寫一個函式。python 有多種傳參方式,預設引數/可變引數/可變關鍵字引數可以處理函式引數中引數可變的問題。
python3.4中增加的過載機制
如果你不用過載就會渾身難受的話
那麼在python3.4中提供有一個轉發機制來實現過載
from functools import singledispatch
@singledispatch
def function(obj):
print('%r'%(obj))
@function.register(int)
def function_int(obj):
print('Integer: %d'%(obj))
@function.register(str)
def function_int (obj):
print('String: %s'%(obj))
@function.register(list)
def function_list(obj):
print('List: %r'%(obj))
if __name__ == "__main__":
function(1)
function('hello')
function(range(3))
function(object)