首先是速度上的差異,當 interrupter 執行到 {} 時,interrupter 會知道是要建立 dict 物件。 然而,當 interrupter 執行到 dict() 時,他會認定執行 function call。因此多個函數呼叫與參數傳遞。不過這兩者間的效能差異不算大,也可能會被最佳化。我用下面程式碼做簡單測試
import timeit print timeit.timeit('{}', number=10000000) print timeit.timeit('dict()', number=10000000) print timeit.timeit('{"a": 1, "b": 2}', number=10000000) print timeit.timeit('dict(a=1, b=2)', number=10000000)
在我的電腦程式執行結果為
很明顯,使用dict literal 比 dict constructor 快。不過執行 10000000 次才有一秒的差距。所以也沒差太多。0.343515010393 1.87652465496 1.05200176199 3.6373124445
其次,使用 dict literal 的用法,他允許你使用非字串物件當作 key。 然而,使用 dict constructor 他只支援使用 字串物件當作 key。不過 python 的 dict 物件對於使用字串當成 key 的查詢有做最佳化。所以用字串當 key 沒什麼不好的。
最後一個差別,就是你用 dict constructor 建立物件時,當你的 key 是 字串時,你可以少打很多個單引號或雙引號。不過當你是用 dict literal,就只能乖乖地打單引號或雙引號了。
沒有留言:
張貼留言