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