假設我有這個功能:
def myF(a, b):
return a*b-2*b
假設我想要一個默認值bto be a-1。
如果我寫:
def myF(a, b=a-1):
return a*b-2*b
我收到錯誤訊息:
NameError: name 'a' is not defined
我可以使用下面的代碼:
def myF(a, b):
return a*b-2*b
def myDefaultF(a):
return myF(a, a-1)
有myF默認值,但我不喜歡它。
我怎樣才能避免myDefaultF并myF使用默認值a-1而b沒有錯誤?
uj5u.com熱心網友回復:
您可以執行以下操作:
def myF(a, b=None):
if b is None:
b = a - 1
return a * b - 2 * b
uj5u.com熱心網友回復:
如果您需要將 的值b設為 的函式a,但可能需要更改該函式,則可以將 的默認值設定b為lambda函式,然后檢查b功能塊中是否可呼叫。
def myF(a, b=lambda a: a-1):
if callable(b):
b = b(a)
return a * b - 2 * b
這也允許您b即時設定不同的功能。
# pass b as an integer
myF(1, 1)
# returns: -1
# use default function for b
myF(4)
# returns: 6
# set b to be 2*a 1
myF(3, lambda a: 2*a 1)
# returns: 7
uj5u.com熱心網友回復:
您可以使用 try-except 子句:
def myF(a, b=None):
try:
return a*b-2*b
except:
return a*(a-1)-2*(a-1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/434858.html
上一篇:來自函式引數的JSON物件的鍵
