python函數參數默認值及重要警告


最有用的形式是對一個或多個參數指定一個默認值。這樣創建的函數,可以用比定義時允許的更少的參數調用,比如:

def ask_ok(prompt, retries=4, reminder='Please try again!'):
    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 ValueError('invalid user response')
        print(reminder)

 

這個函數可以通過幾種方式調用:

  • 只給出必需的參數:ask_ok('Do you really want to quit?')
  • 給出一個可選的參數:ask_ok('OK to overwrite the file?', 2)
  • 或者給出所有的參數: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

重要警告: 默認值只會執行一次。這條規則在默認值為可變對象(python列表、字典以及大多數類實例)時很重要。比如,下面的函數會存儲在后續調用中傳遞給它的參數:

def f(a, L=[]):
    L.append(a)
    return L

print(f(1))
print(f(2))
print(f(3))

 

這將打印出

[1]
[1, 2]
[1, 2, 3]

 

如果你不想要在后續調用之間共享默認值,你可以這樣寫這個python函數:

def f(a, L=None):
    if L is None:
        L = []
    L.append(a)
    return L

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM