我需要具有必须在函数运行时设置的默认参数的函数(例如空列表,从其他参数派生的值或从数据库中获取的数据),并且我目前正在使用以下模式来处理此问题:
def foo(bar, baz=None):
baz = baz if baz else blar()
# Stuff
Run Code Online (Sandbox Code Playgroud)
其中blar()给出了baz在执行期间可能更改的正确默认值.然而,这baz = baz if baz else ...条线条让我感到不雅.有没有其他人有更好的方法来避免默认函数参数的一次性绑定?可由pip安装的小型跨平台库是可接受的替代品.
不,这就是它.通常你测试is None,所以你可以像falsey值安全地通过0或""等.
def foo(bar, baz=None):
baz = baz if baz is not None else blar()
Run Code Online (Sandbox Code Playgroud)
老式的方式是两个班轮.有些人可能更喜欢这个
def foo(bar, baz=None):
if baz is None:
baz = blar()
Run Code Online (Sandbox Code Playgroud)
你可以更换
baz = baz if baz else blar()
Run Code Online (Sandbox Code Playgroud)
和
baz = baz or blar()
Run Code Online (Sandbox Code Playgroud)
如果您仍然对仅测试虚假值而不是None.