$ 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
为什么要使用一个呢?“d = dict()”和“d = {}”之间的区别
$ 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
为什么要使用一个呢?“d = dict()”和“d = {}”之间的区别
如果人们使用(只)dict()
以上(只){}
,它通常是因为他们不知道{}
(这是相当一个壮举),或者是因为他们认为这是更清晰(这是主观的,但不常见。)
有事情可以dict
做,你不能与{}
怎么做,比如把它传递的东西,希望马蹄莲如collections.defaultdict(dict)
。还有的事实,你可以调用dict
与关键字参数,其中一些人喜欢:
>>> dict(spam=1, ham=2)
{'ham': 2, 'spam': 1}
就个人而言,我更喜欢字典文字语法,因为它工作得更好,当你想使用无效的标识符键:
>>> 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
(和混合风格,只是因为某些键不是有效的标识符,呸。)
我那些谁喜欢的话标点符号之一 - 它是我挑选过的Python的原因之一Perl,例如。 “没有大括号的话,生活会更好”(一个古老的Python格言,它带着一个微笑的少年的卡通穿上了一件T恤;-),毕竟(当然,最初是为了分组而提到大括号和缩进),但是,嘿, ,括号是括号! - )。
“支付”几纳秒(为了使用清晰,可读的简短字代替大括号,括号和whatnots)通常是可以承受的(主要是查找内置命名空间的成本,每次使用内置类型或函数时都付费,并且可以通过将循环中的某些查找提升为轻微优化)。
所以,我一般谁喜欢写dict()
为{}
,list(L)
代替L[:]
以及list()
为[]
,tuple()
为()
,等等一个 - 只为拼读一般的风格偏好码。当我在使用不同风格的现有代码库上工作时,或者当我的新项目中的队友以另一种方式拥有强烈的偏好时,我可以接受这一点,当然(不是没有尝试在队友的情况下进行一点传福音,尽管;-)。
”将某些查找从循环中提取出来 - 这意味着什么? – Tshepang 2010-04-30 15:48:28
@Tshepang,例如代替'for in x:f(dict())'('len(x)'lookup for name'dict'),首先绑定一个本地'd = dict'在循环外部,然后'for i in x:f(d())',它对名字'd'做了一个更快的_local_查找)。这是一种基本的Python技术,用于优化某些循环(当然,通过分析),证明它们是性能瓶颈。 – 2010-04-30 16:25:15
顺便说一句(当然,并不涉及这个问题),Unladen Swallow应该使这种成语(d = dict)不必要:) – rbp 2010-04-30 16:56:47
像托马斯说,我使用dict(),所以我可以指定关键字。特别是如果我手动构建一个大的字典来进行数据初始化或者不需要:使用关键字语法可以为每个元素节省两个击键(以及相关的视觉混乱)。
Doug Hellmann写了一个详尽的comparison的性能差异。
不,''dict'在'__builtin__'中。 – 2010-04-30 15:13:56
@MikeGraham是的,但在大多数情况下'__builtins__'是'__builtin__'的别名“ – jamylak 2013-06-03 10:39:42