Python:避免条件?

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)

Mic*_*las 7

你更喜欢的那个越好.我会使用第一个版本,if但这是非常个人化的.


Ale*_*lli 7

当两种风格变化风格如此接近时,我将其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.

  • 什么都不重要,微优化! (4认同)
  • @Chris,我更多地将其视为"找出Python主流是什么" - Python核心开发人员(包括我)最终花费更多时间来优化频繁和受欢迎的使用,而不是边缘和嘲笑,所以`timeit`是一种方法来捕捉他们(我们)努力的总体总和,以做出其他有条不紊的决定. (3认同)
  • @Alex - 我的评论意味着比阅读时更加诙谐.原谅我的业余互联网讽刺技巧. (3认同)