如何将空参数传递给python函数?

新手上路,请多包涵

这是工作代码:

 def g(y=10):
    return y**2

def f(x,y=10):
    return x*g(y)

print(f(5)) #->500

但是,假设我们不想记住并复制关键字参数的默认值 y 到外部函数的定义(特别是如果有多层外部函数)。在上面的示例中,这意味着我们要使用已经在 g 中定义的参数。

一种方法是:

 def f(x,y=None):
    if y==None: return x*g()
    else: return x*g(y)

但是有没有更清洁的方法来做同样的事情?就像是:

 def f(x,y=empty()):
    return x*g(y)

原文由 Nik 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

有趣的问题!这是另一种可能性,但这需要将第二个参数作为命名参数提交。

 >>> def g(y=10):
...     return y**2
...
>>> def f(x, **kwargs):
...     return x * g(**kwargs)
...
>>> f(5)
500
>>> f(5, y=0)
0

原文由 dorian 发布,翻译遵循 CC BY-SA 3.0 许可协议

诸如 def f(x, y=None)def f(x, **kwargs) 之类的签名的一个限制是读者必须深入研究源代码或文档以找出 y 发生了什么坚持简单明了的事情:

 DEFAULT_Y = 10
def g(y=DEFAULT_Y): ...
def f(x, y=DEFAULT_Y): ...

原文由 Alex Hall 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题