點(diǎn)評(píng):C++、Java、C#等諸多編程語(yǔ)言都支持函數(shù)重載,所謂函數(shù)重載指的是在同一個(gè)作用域中有多個(gè)同名函數(shù),它們擁有不同的參數(shù)列表(參數(shù)個(gè)數(shù)不同或參數(shù)類(lèi)型不同或二者皆不同),可以相互區(qū)分。
重載也是一種多態(tài)性,因?yàn)橥ǔJ窃诰幾g時(shí)通過(guò)參數(shù)的個(gè)數(shù)和類(lèi)型來(lái)確定到底調(diào)用哪個(gè)重載函數(shù),所以也被稱(chēng)為編譯時(shí)多態(tài)性或者叫前綁定。
這個(gè)問(wèn)題的潛臺(tái)詞其實(shí)是問(wèn)面試者是否有其他編程語(yǔ)言的經(jīng)驗(yàn),是否理解Python是動(dòng)態(tài)類(lèi)型語(yǔ)言,是否知道Python中函數(shù)的可變參數(shù)、關(guān)鍵字參數(shù)這些概念。
首先Python是解釋型語(yǔ)言,函數(shù)重載現(xiàn)象通常出現(xiàn)在編譯型語(yǔ)言中。
其次Python是動(dòng)態(tài)類(lèi)型語(yǔ)言,函數(shù)的參數(shù)沒(méi)有類(lèi)型約束,也就無(wú)法根據(jù)參數(shù)類(lèi)型來(lái)區(qū)分重載。
再者Python中函數(shù)的參數(shù)可以有默認(rèn)值,可以使用可變參數(shù)和關(guān)鍵字參數(shù),因此即便沒(méi)有函數(shù)重載,也要可以讓一個(gè)函數(shù)根據(jù)調(diào)用者傳入的參數(shù)產(chǎn)生不同的行為。