返回使用dict构造的哈希是否有任何好处,而不仅仅是使用花括号语法?

Geo*_*Geo 4 python hash dictionary

在我读过的一些Python代码中,我一直注意到这段代码:

return dict(somekey=somevalue)
Run Code Online (Sandbox Code Playgroud)

这有什么好处:

return {somekey:somevalue}
Run Code Online (Sandbox Code Playgroud)

我倾向于说不,因为两个对象都属于同一dict类型,但我可能错了.

eph*_*ent 15

>>> def foo(): return dict(a=1)
...
>>> def bar(): return {'a':1}
...
>>> import dis
>>> dis.dis(foo)
  1           0 LOAD_GLOBAL              0 (dict)
              3 LOAD_CONST               1 ('a')
              6 LOAD_CONST               2 (1)
              9 CALL_FUNCTION          256
             12 RETURN_VALUE
>>> dis.dis(bar)
  1           0 BUILD_MAP                1
              3 LOAD_CONST               1 (1)
              6 LOAD_CONST               2 ('a')
              9 STORE_MAP
             10 RETURN_VALUE
>>> import timeit
>>> timeit.Timer(foo).timeit()
0.76093816757202148
>>> timeit.Timer(bar).timeit()
0.31897807121276855

没有功能差异,但后者更有效.


S.L*_*ott 5

它们在语义上是相同的.

dict( param=value, ... )符号限制了你的钥匙为字符串它们是有效的Python标识符.

dict( sequence-of-2-tuples )实际上是一样的{}.

{}符号放置在按键上没有限制.除了它们是可清洗的物体.

存在性能差异.