【发布时间】:2018-02-02 23:38:08
【问题描述】:
TLDR:我想将参数传递给函数,强制函数使用它的默认值,就好像我没有提供任何参数一样。
例如
def foo(string = "DEFAULT PARAM"):
print(string)
def bar(string = None):
foo(string)
bar() # Should print "DEFAULT PARAM", but instead prints None
bar("Hello!") # Should print "Hello!"
我知道有很多解决方法,例如:
def bar(string = None):
foo() if string is None else foo(string)
但我希望有更优雅的东西。像某种默认关键字一样,我可以将 bar 的默认字符串设置为。是这样的吗?
【问题讨论】:
-
def bar(string = "DEFAULT PARAM"):有什么问题? -
why def bar(string = None) is not considered elegant ?因为 foo 打印无。What's wrong with def bar(string = "DEFAULT PARAM"):因为将来会有不同的 bar 调用的函数,有自己的默认值。 -
其中两个已经很好了。不需要替代品。
-
foo(string) if string else foo()可能是您要做的最好的事情。你可以把它炸成一个if块和一个else块,但是真的没什么意义 -
我同意@Patrick Haugh
标签: python