函數分爲定義和調用2個狀態。
函數定義的時候,參數稱爲形參,調用的時候,參數稱爲實參。形參沒有具體的值,但是實參有值。
函數定義時,指定了默認值的參數是默認參數。默認參數的位置必須放在最後位置。
函數定義時,不確定參數的個數,可以使用非固定參數:列表(*args) 和 字典(**kwargs)定義。這樣,函數調用時,位置參數放在列表裏,指定了key=value這種形式的參數會被放在字典裏。
函數調用時,以位置順序確定對應關係的參數稱爲位置參數;指定了參數名的參數稱爲關鍵參數。關鍵參數必須放在位置參數後面。
在python中,‘變量就近查找’是對實參而言。
這與c語言不同。對c語言來說,不分函數定義和調用,變量總是就近查找。
代碼1:
def test():
print(str_temp)
str_temp = 'e'
str_temp = "the king of sea."
test()
Python下,代碼1會報錯:UnboundLocalError: local variable 'luffy' referenced before assignment
代碼2:
def test():
print(str_temp)
str_temp = "the king of sea."
test()
Python下,代碼2不會報錯,打印"the king of sea." 但在c語言裏會報錯,因爲變量str_temp在定義前使用。