ang*_*lar 3 python arguments default idiomatic
我经常遇到大多数人在函数或方法中管理默认参数值,如下所示:
def foo(L=None):
if L is None:
L = []
Run Code Online (Sandbox Code Playgroud)
但是,我看到其他人做的事情如下:
def foo(L=None):
L = L or []
Run Code Online (Sandbox Code Playgroud)
我不知道我是否遗漏了一些东西,但是,为什么大多数人使用第一种方法而不是第二种?它们是同样的东西吗?似乎第二个更清晰,更短.
他们不平等.第一种方法检查确切,给定arg L是None.第二次检查,L是以python方式为真.在python中,如果您在条件中检查列表,则规则如下:
那么提到的方法之间的区别是什么?比较这段代码.
第一:
def foo(L=None):
if L is None:
L = []
L.append('x')
return L
>>> my_list = []
>>> foo(my_list)
>>> my_list
['x']
Run Code Online (Sandbox Code Playgroud)
第二:
def foo(L=None):
L = L or []
L.append('x')
return L
>>> my_list = []
>>> foo(my_list)
>>> my_list
[]
Run Code Online (Sandbox Code Playgroud)
所以首先没有创建新列表,它使用给定的列表.但第二个创造了新的.
| 归档时间: |
|
| 查看次数: |
162 次 |
| 最近记录: |