asd*_*dfg 5 python variable-assignment conditional-statements
哪个更好?
if not var:
var = get_var()
(要么)var = var或get_var()
另外,我怎么知道两者中哪一个更好?
编辑:
史蒂夫的另一个选择,
var = var if var else get_var()Run Code Online (Sandbox Code Playgroud)
当两种风格变化风格如此接近时,我将其timeit用作打破平局:更快必须意味着更接近Python的主流,即更好.嘿,这比无休止的辩论好,是吗? - )所以:
$ python -mtimeit -s'var=0; getvar=lambda:0' 'var = var or getvar()'
1000000 loops, best of 3: 0.359 usec per loop
$ python -mtimeit -s'var=0; getvar=lambda:0' 'if not var: var = getvar()'
1000000 loops, best of 3: 0.361 usec per loop
$ python -mtimeit -s'var=1; getvar=lambda:1' 'var = var or getvar()'
10000000 loops, best of 3: 0.123 usec per loop
$ python -mtimeit -s'var=1; getvar=lambda:1' 'if not var: var = getvar()'
10000000 loops, best of 3: 0.0899 usec per loop
Run Code Online (Sandbox Code Playgroud)
在if当等效-有它var是假的,当它的速度更快true.