函數名重名:
在其他語言中,如果存在函數名相同,參數也相同,返回類型也相同的情況,會出現錯誤;但是在 python 中不會出錯,而是後定義的函數,會覆蓋掉先定義的函數;如下代碼:
# 定義兩個函數,名稱相同
def test():
print("=== test1 ===")
def test():
print("=== test2 ===")
# 調用函數
test()
輸出結果:
這是因爲:
第一次定義函數 test() 的時候,python 解析器會在內存中開闢一個空間,用來存儲第一塊函數體的內容,而 test 只是這一塊函數體的引用,即變量 test 指向這一塊函數體;
第二次再定義函數 test() 的時候,python 解析器又在內存中開闢了一個空間,用來存儲第二塊函數體的內存,此時,變量 test 不再指向第一塊函數體,而是指向了第二塊函數體,所以 test() 實際調用的是第二個函數;