这在 C 中很常见:像这样破解“空 if 语句”:
if(mostlyhappencondition)
;#empty statement
else{
dosomething;
}
它在 Python 中工作?我的意思是,我们可以通过使用它来提高应用程序的性能吗?我也想知道为什么。
这在 C 中很常见:像这样破解“空 if 语句”:
if(mostlyhappencondition)
;#empty statement
else{
dosomething;
}
它在 Python 中工作?我的意思是,我们可以通过使用它来提高应用程序的性能吗?我也想知道为什么。
如果“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
以下
def foo(x):
if not x:
return x+2
拆解到:
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)
我只能猜测您正在寻找该pass
语句,有时需要创建一个空代码块以防止语法错误。
if mostlyhappencondition:
pass
else:
do_something()
这样做会更常见,这在逻辑上是等效的:
if not mostlyhappencondition:
do_something()
这里没有显着的性能提升。
直到你没有任何事情if True:
可以做
if not mostlyhappenedcondition:
do something()
如果即使将来您也不必在“if”中添加任何内容,那么它在您的代码中是多余的。
不,这不会提高性能。事实上,它在 C 中也没有。你是从哪里听来的?
not
/!
读起来更好,应该有或多或少相同的速度。
并实际测试gcc -O4
:
#include <stdio.h>
int main(int argc, char *argv[]) {
for(int i = 0; i < 1000000000; i++) {
if(!(i < 900000000)) {
putchar('.');
}
}
}
对比
#include <stdio.h>
int main(int argc, char *argv[]) {
for(int i = 0; i < 1000000000; i++) {
if(i < 900000000);
else {
putchar('.');
}
}
}
在我的电脑上,#1 用了 6.62 秒,#2 用了 6.64 秒。
这个例子有一个列表
myList = [1, 2, 4, 4, 1, 4, 2, 6, 2, 9]
newList = []
for element in myList:
if element not in newList:
newList.append(element)
or
pass
else:
print("The list with unique elements only:")
print(myList)
print(newList)