函數(shù)重載是Python中的稀罕東西。
在寧江等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計、做網(wǎng)站 網(wǎng)站設(shè)計制作按需設(shè)計,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,全網(wǎng)整合營銷推廣,外貿(mào)網(wǎng)站建設(shè),寧江網(wǎng)站建設(shè)費用合理。
Python ? 3.6.0a4 Documentation ? The Python Standard Library ? 10.
Functional
10.2. functools — Higher-order functions and operations on callable objects
!
python里面沒有重載吧?
正常的重載說的應(yīng)該是函數(shù)方法的重載,即兩個函數(shù)的名稱相同但是參數(shù)不同是重載,會出現(xiàn)重載的情況一般是函數(shù)實現(xiàn)相同功能時,遇到參數(shù)類型可能不同的情況,會出現(xiàn)重載,如比較常見的對于加法的實現(xiàn),如果輸入兩個整數(shù)相加則直接使用整數(shù)加法,如果兩個字符串相加則使用字符串的拼接。輸入的參數(shù)類型不同,其實是兩個不同的函數(shù),這在那種強類型語言中是可以利用函數(shù)重載來實現(xiàn)的,而python中函數(shù)類型是動態(tài)的各種各樣的,所以不需要重載這個機制。相同函數(shù)名就是表示同一個方法。
python是動態(tài)腳本型語言,設(shè)計的機制就是按函數(shù)名來保存函數(shù)入口,而不是函數(shù)名+參數(shù)。
你調(diào)用函數(shù)的時候,可以多傳參數(shù),一樣的會調(diào)用到只是函數(shù)名匹配的那個函數(shù)。
python雖然不支持函數(shù)重載,但是可以通過傳遞容器類型的參數(shù)(list、tuple、set、dict)來實現(xiàn)類似的功能
沒有重載,但是可以有默認參數(shù)和不定長參數(shù),可以判斷默認值和參數(shù)長度來處理。
比如:
def range(start, end = -1):
if end == -1:
end = start
start = 0
或
def range(*args):
if len(args) == 1:
start = 0
end = args[0]
elif len(args) == 2:
start, end = args[0], args[1]
python 的重載主要包括方法重載和運算符重載。1.python 方法重載: 其他的語言一般對于方法重載的話,主要是根據(jù)參數(shù)的類型不同或者是數(shù)量不同來區(qū)分同名的方法。而python則比較特殊,它本身是動態(tài)語言,方法的參數(shù)是沒有類型的,當(dāng)調(diào)用傳值的時候才確定參數(shù)的類型,故對參數(shù)類型不同的方法無需考慮重載。對參數(shù)數(shù)量不同的方法,則(大多數(shù)情況下)可以采用參數(shù)默認值來實現(xiàn)。比如你可以定義函數(shù)的默認值:def info(x,y,z=1): pass2.python 運算符重載: 在C#中,我們通過使用關(guān)鍵字operator定義一個運算符方法,并定義與所在類相關(guān)的運算符行為。在 Python中,運算符重載的方式更為簡單——每一個類都默認內(nèi)置了所有可能的運算符方法,只要重寫這個方法,就可以實現(xiàn)針對該運算符的重載。例如以下是重載加法操作:class Info(object): def __init__(self): self.a = 11 self.b = 22 def __add__(self,x): return self.a * self.b 上面的例子是重寫了+操作符號,你也可以重載其他的運算符。比如你可以重載乘號運算符,感興趣的話,可以自己寫寫代碼。希望上面講的2點能夠讓你對python重載有個簡單的認識。有興趣的可以關(guān)注下。