以下代码之间的区别是什么:
foo = list()
和
foo = []
Python建议有一种做事方式,但有时似乎不止一种。
答案 0 :(得分:21)
一个函数调用,一个是文字:
>>> import dis
>>> def f1(): return list()
...
>>> def f2(): return []
...
>>> dis.dis(f1)
1 0 LOAD_GLOBAL 0 (list)
3 CALL_FUNCTION 0
6 RETURN_VALUE
>>> dis.dis(f2)
1 0 BUILD_LIST 0
3 RETURN_VALUE
使用第二种形式。它更像Pythonic,它可能更快(因为它不涉及加载和调用单独的函数)。
答案 1 :(得分:13)
list
是一个可在运行时覆盖的全局名称。 list()
调用该名称。
[]
始终是列表文字。
答案 2 :(得分:12)
为了完成,需要注意的另一件事是list((a,b,c))
将返回[a,b,c]
,而[(a,b,c)]
将不会解包元组。当您想要将元组转换为列表时,这非常有用。反之亦然,tuple([a,b,c])
会返回(a,b,c)
。
编辑:正如orlp提到的,这适用于任何可迭代的,而不仅仅是元组。