初始化空Python数据结构

时间:2012-06-13 18:00:09

标签: python list dictionary

可用于创建空Python列表/词典的两种语法形式之间是否存在任何明显差异,即

l = list()
l = []

d = dict()
d = {}

我想知道使用一个是否优于另一个。

4 个答案:

答案 0 :(得分:20)

函数表单在运行时调用构造函数以返回一个新实例,而文字形式使编译器在编译时“创建”它(实际上,发出导致新对象的字节码)。如果(出于某种原因)类本地反弹到不同的类型,前者可能很有用。

>>> 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        

答案 1 :(得分:5)

主要区别在于一个表单包含名称查找,而另一个表单不包含。说明这种差异的例子:

def list():
    return {}

print []
print list()

打印

[]
{}

当然你绝对不应该这样胡说八道。

答案 2 :(得分:2)

我的直觉告诉我,只要你保持一致,两者都是可以接受的。

答案 3 :(得分:0)

我不知道有什么不同,主要是风格偏好。