Mik*_*ike 1 python pep8 default-arguments
假设我们有该函数f,并且我需要参数b默认为空列表,但由于可变默认参数的问题而无法设置 b=[]。
其中哪一个最Pythonic,或者有更好的方法吗?
def f(a, b=None):
if not b:
b = []
pass
def f(a, b=None):
b = b or []
pass
Run Code Online (Sandbox Code Playgroud)
第一种形式,因为它读起来更容易。在没有任何特定上下文的情况下,您应该显式测试默认值,以避免传入值的潜在真实性问题。
def f(a, b=None):
if b is None:
b = []
pass
Run Code Online (Sandbox Code Playgroud)
另外,当你真正的意思是 if x is not None 时,请注意编写 if x —— 例如,当测试默认为 None 的变量或参数是否设置为其他值时。另一个值可能具有在布尔上下文中可能为 false 的类型(例如容器)!
您可以在整个存储库中看到此方法的示例cpython:
| 归档时间: |
|
| 查看次数: |
6164 次 |
| 最近记录: |