我最近看着需要創建的三個空單時,到位的[]
,{}
和()
使用list()
,dict()
,tuple()
,分別。理由是它看起來更具可讀性。我打算徵求對這種風格的意見,但後來我決定測試性能。我這樣做:爲什麼list(),dict()和tuple()比[],{}和()慢?
>>> from timeit import Timer
>>> Timer('for x in range(5): y = []').timeit()
0.59327821802969538
>>> from timeit import Timer
>>> Timer('for x in range(5): y = list()').timeit()
1.2198944904251618
我試過dict()
,tuple()
和list()
和每個函數調用的版本是令人難以置信的比語法版本({}
[]
,()
)那麼差,我有3個問題:
- 爲什麼函數調用更昂貴?
- 爲什麼這麼差?
- 爲什麼在我的計時器中創建5個空列表需要1.2秒?我知道
timeit
關閉了垃圾回收功能,但是在考慮我僅使用range(5)
時,這可能不會起作用。
回覆:風格意見 - 我經常使用[]。我認爲這很清楚。性能問題雖然很有趣。 – nmichaels 2010-11-22 02:32:00
有很多東西看起來很奇怪,直到你習慣了它們。因爲list()實際上可能不是'__builtins __。list',所以我會一直比較喜歡'[]'到'list()'。買家要當心。 – SingleNegationElimination 2010-11-22 02:39:12