考虑这个功能:
def foo(x, y=1):
return x*x + y*y
现在我想像这样打电话给foo:
if param_y == None:
z = foo(3)
else:
z=foo(3,param_y)
之前在某处确定了param_y。我想简化这个,这样代码中只有一个foo调用,特别是因为如果我有多个这样的可选参数,我会得到一个巨大的(而且很丑陋!!)if-else子句,所以我可以做:
z = foo(3, param_y if param_y != None else 1)
但这需要调用者知道1是y的默认值,我觉得它有点难看。是否有替代语法,如:
z = foo(3, if param_y != None: param_y)
答案 0 :(得分:2)
你不能更新foo功能吗?
def foo(x, y):
if y is None:
y = 1
return x*x + y*y
并且每次都打电话:
z=foo(3,param_y)