tsh*_*ang 35 python performance dictionary timing
$ python2.7 -m timeit 'd={}'
10000000 loops, best of 3: 0.0331 usec per loop
$ python2.7 -m timeit 'd=dict()'
1000000 loops, best of 3: 0.19 usec per loop
Run Code Online (Sandbox Code Playgroud)
为什么用一个而不是另一个?
Ale*_*lli 54
我是那些喜欢标点符号的人之一 - 这是我在Perl上选择Python的原因之一."没有大括号的生活会变得更好"(一个古老的蟒蛇座右铭,穿着T恤上带着一个微笑少年的卡通片;-)毕竟(原本打算用括号和缩进来分组,当然,但是,嘿,嘿,牙箍是牙套! - ).
"支付"一些纳秒(为了使用清晰,可读的短字而不是括号,括号和诸如此类)通常是可以承受的(这主要是查找内置命名空间的成本,每次你付出的代价)使用内置类型或函数,你可以通过从循环中提取一些查找来温和地优化它.
所以,我通常是喜欢写作dict()的人{},list(L)代替L[:]以及list()for [],tuple()for ()等等 - 只是对可发音代码的一般风格偏好.当我在使用不同风格的现有代码库上工作时,或者当我在新项目中的队友具有强烈的偏好时,我当然可以接受这一点(尽管在队友的情况下尝试了一点传福音,尽管;-).
如果人们使用(只)dict()以上(只){},它通常是因为他们不知道{}(这是一个相当壮举),或者是因为他们认为这是更清晰(这是主观的,但不常见.)
但是,你可以做的事情dict是你无法做到的{},例如将它传递给期望可调用的东西,比如collections.defaultdict(dict).还有一个事实是你可以dict用关键字参数调用,有些人更喜欢:
>>> dict(spam=1, ham=2)
{'ham': 2, 'spam': 1}
Run Code Online (Sandbox Code Playgroud)
就个人而言,我更喜欢dict文字语法,因为当你想使用不是有效标识符的键时它更好用:
>>> dict(pass=1)
File "<stdin>", line 1
dict(pass=1)
^
SyntaxError: invalid syntax
>>> dict('ham and eggs'=1)
File "<stdin>", line 1
SyntaxError: keyword can't be an expression
Run Code Online (Sandbox Code Playgroud)
(并且混合样式只是因为某些键不是有效的标识符,所以.)
| 归档时间: |
|
| 查看次数: |
15216 次 |
| 最近记录: |