Python官方3.2文件教程--方法定義-預設引數值
2.7.1 預設引數值
最有用的形式就是給一個或多個變數制定預設值。這種方法可以建立一個允許呼叫時比定義時需要更少的引數。例如:
def ask_ok(prompt, retries=4, complaint=’Yes or no, please!’):
while True:
ok = input(prompt)
if ok in (’y’, ’ye’, ’yes’):
return True
if ok in (’n’, ’no’, ’nop’, ’nope’):
return False
retries = retries - 1
if retries < 0:
raise IOError(’
print(complaint)
這個方法可以用以下幾種方法呼叫:
l 給個唯一常量: ask_ok(’Do you really want to quit?’)
l 給一個變數: ask_ok(’OK to overwrite the file?’, 2)
l 設定所有的變數:
ask_ok(’OK to overwrite the file?’, 2, ’Come on, only yes or no!’)
這個例項也介紹關鍵in的用法。其功能在於測試輸入字串是否還有特定的值。預設值也可以在方法定義時候就被限制範圍。例如:
i = 5
def f(arg=i):
print(arg)
i = 6
f()
將會輸出5
重要提醒: 預設值僅被設定一次,這與以前預設值為可變物件(如列表、字典和多數類例項時)有很大的區別。例如, 接下來的方法累計被傳入的引數變數到下次呼叫:
def f(a, L=[]):
L.append(a)
return L
print(f(1))
print(f(2))
print(f(3))
將會輸出
[1]
[1, 2]
[1, 2, 3]
如果你不想預設值在兩個呼叫時分享。你可以寫如下方法代替上面。
def f(a, L=None):
if L is None:
L = []
L.append(a)
return L