首先是速度上的差异,当 interrupter 执行到 {} 时,interrupter 会知道是要建立 dict 物件。 然而,当 interrupter 执行到 dict() 时,他会认定执行 function call。因此多个函数呼叫与参数传递。不过这两者间的效能差异不算大,也可能会被**化。我用下面程式码做简单测试
import timeit
很明显,使用dict literal 比 dict constructor 快。不过执行 10000000 次才有一秒的差距。所以也没差太多。
其次,使用 dict literal 的用法,他允许你使用非字串物件当作 key。 然而,使用 dict constructor 他只支援使用 字串物件当作 key。不过 python 的 dict 物件对于使用字串当成 key 的查询有做**化。所以用字串当 key 没什么不好的。
最后一个差别,就是你用 dict constructor 建立物件时,当你的 key 是 字串时,你可以少打很多个单引号或双引号。不过当你是用 dict literal,就只能乖乖地打单引号或双引号了。