我经常遇到大多数人在函数或方法中管理默认参数值,如下所示:
def foo(L=None): if L is None: L = []
但是,我看到其他人做的事情如下:
def foo(L=None): L = L or []
我不知道我是否遗漏了一些东西但是,为什么大多数人使用第一种方法而不是第二种?它们是同样的东西吗?似乎第二个更清晰,更短.
解决方法
他们不平等.
第一种方法准确检查,给定arg L为None.
第二次检查,L是以python方式为真.在python中,如果您在条件中检查列表,则规则如下:
第一种方法准确检查,给定arg L为None.
第二次检查,L是以python方式为真.在python中,如果您在条件中检查列表,则规则如下:
>列表为空,则为False
>否则为真
第一:
def foo(L=None): if L is None: L = [] L.append('x') return L >>> my_list = [] >>> foo(my_list) >>> my_list ['x']
第二:
def foo(L=None): L = L or [] L.append('x') return L >>> my_list = [] >>> foo(my_list) >>> my_list []
所以首先没有创建新列表,它使用给定的列表.但第二个创造了新的.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。