在python中'empty if statement'怎么样?

JJP*_*JJP 28 python if-statement

它在C中很常见:黑客'如果声明'这样说:

if(mostlyhappencondition)
    ;#empty statement
else{
    dosomething;
}
Run Code Online (Sandbox Code Playgroud)

它在Python中工作?我的意思是,我们可以通过使用它来改善应用程序的性能吗?我也想知道为什么.

kob*_*las 36

如果"if"中没有else情况,则性能会有所改善,因为字节码不会将执行传递给"if"情况.

这是一些功能和输出 dis.dis(foo)

以下示例应用程序:

def foo(x):
    if x:
        pass
    else:
        return x+2
Run Code Online (Sandbox Code Playgroud)

拆解为:

5           0 LOAD_FAST                0 (x)
            3 POP_JUMP_IF_FALSE        9

6           6 JUMP_FORWARD             8 (to 17)

8     >>    9 LOAD_FAST                0 (x)
           12 LOAD_CONST               1 (2)
           15 BINARY_ADD          
           16 RETURN_VALUE        
      >>   17 LOAD_CONST               0 (None)
           20 RETURN_VALUE        
Run Code Online (Sandbox Code Playgroud)

下列

def foo(x):
    if not x:
        return x+2
Run Code Online (Sandbox Code Playgroud)

拆解为:

11           0 LOAD_FAST                0 (x)
             3 POP_JUMP_IF_TRUE        14

12           6 LOAD_FAST                0 (x)
             9 LOAD_CONST               1 (2)
            12 BINARY_ADD          
            13 RETURN_VALUE        
       >>   14 LOAD_CONST               0 (None)
Run Code Online (Sandbox Code Playgroud)


wim*_*wim 16

我只能猜测你正在寻找pass语句,有时需要创建一个空代码块来防止语法错误.

if mostlyhappencondition:
    pass
else:
    do_something()
Run Code Online (Sandbox Code Playgroud)

这样做会更常见,这在逻辑上是等价的:

if not mostlyhappencondition:
    do_something()
Run Code Online (Sandbox Code Playgroud)

这里没有显着的性能提升.

  • 使用特定的 if/elif/else 或 try/ except 时会提高清晰度。 (3认同)