1. 程式人生 > >Python官方3.2文件教程--方法定義-預設引數值

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 (yyeyes):

return True

if ok in (nnonopnope):

return False

retries = retries - 1

if retries < 0:

raise IOError(

refusenik user)

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()

將會輸出

重要提醒: 預設值僅被設定一次,這與以前預設值為可變物件(如列表、字典和多數類例項時)有很大的區別。例如, 接下來的方法累計被傳入的引數變數到下次呼叫:

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