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
没有功能差异,但后者更有效.
它们在语义上是相同的.
该dict( param=value, ... )符号限制了你的钥匙为字符串它们是有效的Python标识符.
该dict( sequence-of-2-tuples )实际上是一样的{}.
该{}符号放置在按键上没有限制.除了它们是可清洗的物体.
存在性能差异.