最近我看着使用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
Run Code Online (Sandbox Code Playgroud)
我试过了dict(),tuple()并且list()每个函数调用版本都比语法版本差得多({} [],())所以,我有3个问题:
timeit关闭垃圾收集,但考虑到我只使用时,这可能不会产生影响range(5).Sin*_*ion 18
函数调用需要变量名查找,然后是函数调用.然后调用的函数创建一个列表并返回它.列表语法文字使解释器只能创建一个列表:
>>> import dis
>>> foo = lambda :[]
>>> bar = lambda :list()
>>> dis.dis(foo)
1 0 BUILD_LIST 0
3 RETURN_VALUE
>>> dis.dis(bar)
1 0 LOAD_GLOBAL 0 (list)
3 CALL_FUNCTION 0
6 RETURN_VALUE
>>>
Run Code Online (Sandbox Code Playgroud)