使用dict文字和dict构造函数有什么区别吗?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (28)

使用PyCharm时,我注意到它提供了一个dict literal:

d = {
    'one': '1',
    'two': '2',
}

变成dict constructor:

d = dict(one='1', two='2')

这些不同的方法在某些方面是否有显著的不同?

提问于
用户回答回答于

我想你已经指出了最明显的区别。除此之外,

第一个不需要查找dict这应该会让它更快一点

第二次dict会在locals()查询。然后是globals()并找到内置的。因此可以通过定义一个名为dict的东西来举例。比如调试的时候。

用户回答回答于

在Python3.2上,它们看起来几乎是一样的。

第一个不需要查找dict这应该会让它更快一点。

>>> def literal():
...   d = {'one': 1, 'two': 2}
...
>>> def constructor():
...   d = dict(one='1', two='2')
...
>>> import dis
>>> dis.dis(literal)
  2           0 BUILD_MAP                2
              3 LOAD_CONST               1 (1)
              6 LOAD_CONST               2 ('one')
              9 STORE_MAP
             10 LOAD_CONST               3 (2)
             13 LOAD_CONST               4 ('two')
             16 STORE_MAP
             17 STORE_FAST               0 (d)
             20 LOAD_CONST               0 (None)
             23 RETURN_VALUE
>>> dis.dis(constructor)
  2           0 LOAD_GLOBAL              0 (dict)
              3 LOAD_CONST               1 ('one')
              6 LOAD_CONST               2 ('1')
              9 LOAD_CONST               3 ('two')
             12 LOAD_CONST               4 ('2')
             15 CALL_FUNCTION          512
             18 STORE_FAST               0 (d)
             21 LOAD_CONST               0 (None)
             24 RETURN_VALUE

扫码关注云+社区