使用 list() 和 [] 的主要区别是什么?
list() 和 [] 之间最明显和最明显的关键区别在于语法。暂时先把语法搁置一旁,那些刚接触过 Python 的人或中间接触过 Python 的人可能会争辩说它们都是列表或派生自同一个类;那是真实的。这进一步增加了了解两者关键差异的重要性,其中大部分内容概述如下。
list() 是一个函数,[] 是 字面语法。
让我们看看当我们通过反汇编器分别调用list()和[]时会发生什么。
>>> import dis
>>> print(dis.dis(lambda: list()))
1 0 LOAD_GLOBAL 0 (list)
3 CALL_FUNCTION 0 (0 positional, 0 keyword pair)
6 RETURN_VALUE
None
>>> print(dis.dis(lambda: []))
1 0 BUILD_LIST 0
3 RETURN_VALUE
None
上面反汇编程序的输出表明,文字语法版本不需要全局查找,由操作码 LOAD_GLOBAL 表示或函数调用,由操作码 CALL_FUNCTION 表示。
因此,文字语法比对应的语法更快。 – 让我们花点时间看看下面的时间。
import timeit
>>> timeit.timeit('[]', number=10**4)
0.0014592369552701712
>>> timeit.timeit('list()', number=10**4)
0.0033833282068371773
另一方面,同样重要且值得指出的是文字语法,[] 不会解包值。解包示例如下所示。
>>> list('abc') # unpacks value
['a', 'b', 'c']
>>> ['abc'] # value remains packed
['abc']
python 中的字面量是什么?
文字是一种符号或一种编写常量或原始变量值的方式,python 将其识别为内置类型。
来自我在 PythonRight - what's the difference between list and [] 上的帖子。