假设我有一个函数:
def myF(a, b):
return a*b-2*b假设我希望b的默认值是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,而没有错误?
发布于 2022-03-01 08:04:47
您可以执行以下操作:
def myF(a, b=None):
if b is None:
b = a - 1
return a * b - 2 * b发布于 2022-03-01 08:22:12
如果需要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发布于 2022-03-01 08:07:25
您可以使用“试-除”子句:
def myF(a, b=None):
try:
return a*b-2*b
except:
return a*(a-1)-2*(a-1)https://stackoverflow.com/questions/71305358
复制相似问题