Python实例变量作为默认参数[重复]

Python实例变量作为默认参数[重复],第1张

Python实例变量作为默认参数[重复]

对这个问题的简短回答是“否”,您不能消除if语句,因为Python仅检查一次签名,因此默认值在所有调用中共享。考虑例如:

def addit(x, L=[]):    L.append(x)    return L

与:

def addit(x,L=None):     if L is None:         L=[]     L.append(x)     return L

这两个功能虽然看起来相同,但实际上具有完全不同的行为。在第一个实例中,L的默认值在调用之间共享,因此在第一种情况下,

addit(1)
其后
addit(2)
返回两个对象,它们实际上指向同一个基础对象并且值为
[1,2]
,而在第二种情况下,它将返回将返回两个单独的对象,
[1]
[2]

因此,我为您提供的唯一建议是使用默认值,

None
因为这是未指定参数的标准约定,而是继续使用if检查,因为使用某些现有对象作为默认值将具有行为略有不同(通常是错误的)。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5668800.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存