Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建';如果语句为空';用python_Python_If Statement - Fatal编程技术网

如何创建';如果语句为空';用python

如何创建';如果语句为空';用python,python,if-statement,Python,If Statement,这在C语言中非常常见:黑客攻击“empty if statement”,如下所示: if(mostlyhappencondition) ;#empty statement else{ dosomething; } 它在Python中工作?我的意思是,我们可以通过使用它来提高应用程序的性能吗?我也想知道原因。不,这不会提高性能。事实上,它在C中也不存在。你在哪里听到的 不是/读取效果更好,速度应该大致相同 并实际使用gcc-O4进行了测试: #include <stdio

这在C语言中非常常见:黑客攻击“empty if statement”,如下所示:

if(mostlyhappencondition)
    ;#empty statement
else{
    dosomething;
}

它在Python中工作?我的意思是,我们可以通过使用它来提高应用程序的性能吗?我也想知道原因。

不,这不会提高性能。事实上,它在C中也不存在。你在哪里听到的

不是
/
读取效果更好,速度应该大致相同


并实际使用
gcc-O4进行了测试:

#include <stdio.h>

int main(int argc, char *argv[]) {
    for(int i = 0; i < 1000000000; i++) {
        if(!(i < 900000000)) {
            putchar('.');
        }
    }
}
#包括
int main(int argc,char*argv[]){
对于(int i=0;i<100000000;i++){
如果(!(i<900000000)){
putchar('.');
}
}
}
vs

#包括
int main(int argc,char*argv[]){
对于(int i=0;i<100000000;i++){
如果(i<900000000);
否则{
putchar('.');
}
}
}

#在我的计算机上,1用了6.62秒,2用了6.64秒。

我只能猜测您正在查找
pass
语句,有时需要创建空代码块以防止语法错误

if mostlyhappencondition:
    pass
else:
    do_something()
这样做更为常见,这在逻辑上是等价的:

if not mostlyhappencondition:
    do_something()

这里没有显著的性能提升

直到你在
中没有任何东西时,如果是真的:
你可以做

if not mostlyhappenedcondition:
   do something()

如果将来您不必在“If”中添加任何内容,那么它将在您的代码中重新加载。

如果“If”中没有else,那么性能会有所提高,因为字节码不会将执行传递到“If”中

下面是一些函数和
dis.dis(foo)

以下示例应用程序:

def foo(x):
    if x:
        pass
    else:
        return x+2
分解为:

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        
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)
以下

def foo(x):
    if not x:
        return x+2
分解为:

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        
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)
此示例包含一个列表


这在C语言中很常见吗?在我看来,这似乎是一次误导性的优化尝试。我一直在寻找类似的编码策略。原因不是为了优化,而是为了提高代码的可读性。例如,如果不是某件事,也不是某件事,就不要使用
:dou\u something
如果是某件事或某件事,最好将代码读为
:pass else:dou\u something
。这里的答案很有帮助!谢谢。当您只想放置一个空的#待办事项块时更有用。使用specific if/elif/else或try/except可以提高清晰度。