有条件地保留可选参数

时间:2015-06-15 11:00:26

标签: python python-3.x

考虑这个功能:

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)

1 个答案:

答案 0 :(得分:2)

你不能更新foo功能吗?

def foo(x, y):
    if y is None:
        y = 1
    return x*x + y*y

并且每次都打电话:

z=foo(3,param_y)