點評:C++、Java、C#等諸多編程語言都支持函數重載,所謂函數重載指的是在同一個作用域中有多個同名函數,它們擁有不同的參數列表(參數個數不同或參數類型不同或二者皆不同),可以相互區分。
重載也是一種多態性,因為通常是在編譯時通過參數的個數和類型來確定到底調用哪個重載函數,所以也被稱為編譯時多態性或者叫前綁定。
這個問題的潛臺詞其實是問面試者是否有其他編程語言的經驗,是否理解Python是動態類型語言,是否知道Python中函數的可變參數、關鍵字參數這些概念。
首先Python是解釋型語言,函數重載現象通常出現在編譯型語言中。
其次Python是動態類型語言,函數的參數沒有類型約束,也就無法根據參數類型來區分重載。
再者Python中函數的參數可以有默認值,可以使用可變參數和關鍵字參數,因此即便沒有函數重載,也要可以讓一個函數根據調用者傳入的參數產生不同的行為。