对这个问题的简短回答是“否”,您不能消除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检查,因为使用某些现有对象作为默认值将具有行为略有不同(通常是错误的)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)