可用于创建空 Python 列表/字典的两种语法形式之间是否有任何明显的区别,即
l = list()
l = []
和:
d = dict()
d = {}
我想知道使用一个是否比另一个更可取。
可用于创建空 Python 列表/字典的两种语法形式之间是否有任何明显的区别,即
l = list()
l = []
和:
d = dict()
d = {}
我想知道使用一个是否比另一个更可取。
函数形式在运行时调用构造函数以返回一个新实例,而文字形式使编译器在编译时“创建”它(实际上,发出产生新对象的字节码)。如果(出于某种原因)类已在本地反弹到不同类型,则前者可能很有用。
>>> def f():
... []
... list()
... {}
... dict()
...
>>> dis.dis(f)
2 0 BUILD_LIST 0
3 POP_TOP
3 4 LOAD_GLOBAL 0 (list)
7 CALL_FUNCTION 0
10 POP_TOP
4 11 BUILD_MAP 0
14 POP_TOP
5 15 LOAD_GLOBAL 1 (dict)
18 CALL_FUNCTION 0
21 POP_TOP
22 LOAD_CONST 0 (None)
25 RETURN_VALUE
主要区别在于一种形式包含名称查找,而另一种则不包含。说明这种差异的示例:
def list():
return {}
print []
print list()
印刷
[]
{}
当然,你绝对不应该做这种废话。
我的直觉告诉我,只要你保持一致,两者都是可以接受的。
我不知道有什么区别,主要是风格偏好。