def show_name(name = "no name"):
print(name)
show_name("John")
#John
show_name()
#no name
只要在參數後面加個等於可以設定參數的預設值
但要小心不要使用可變(mutable)的容器當作預設值, ex: list, dict, set
不然會出現下面的問題
def add_me(names = []):
names.append('Me')
return names
print(add_me())
#['Me']
print(add_me())
#['Me', 'Me']
python funtion的default是在建立function時就已經製造出來了
也就是說每一次呼叫add_me的時候 都是使用同一個default的names
第一次呼叫時names是空list
但第二次叫呼時會使用第一次的names 這時就會產生意想不到的效果
若是不想要產生這種問題 請把default value設定為None 然後在function內檢查
def add_me(names = None):
if names is None:
names = []
names.append('Me')
return names
print(add_me())
#['Me']
print(add_me())
#['Me']
原來如此啊!謝謝大師!