When is `pass` necessary in a Python if statement?
查看其他人为我当前正在处理的项目编写的一些代码,我经常会看到下面的表单中的if语句。
1 2 3 4
| if condition:
do this
else:
pass |
这里使用pass有什么原因吗?难道整个else声明不只是被遗漏了吗?你为什么要把这个部分和pass放在一起?同样,我也看到了:
1 2 3 4
| if condition:
pass
else:
do this |
为什么你要这样写代码,当你可以这样做的时候:
1 2
| if not condition:
do this |
使用pass命令的原因是我缺少的,还是这些使用pass命令是多余的?
- 你说得对,else: pass可以完全移除,而且几乎总是应该移除。你也对,一个if …: pass总是可以重写为if not …:来交换if和else位(此时你可以删除else: pass位),通常应该是,但有时它只是在正条件下而不是负条件下读得更好,如果你的条件是推着简单的界限可读性,这种微小的差异是值得的。
- 顺便说一句,如果你不确定自己是否有这种情况,试着用英语(或者你的母语)读出同样的情况。如果你觉得自己在想"等等,什么?哦,我明白了……,或者想想其中一个词的反义词,你的否定词太多了。这种直觉通常在不同的人之间,甚至在编程和数学之间都是相当一致的,尽管(至少在我一千年前研究这种东西的时候)"一个太多"的实际规则令人惊讶地难以编纂。
当您需要处理一个您不想做任何事情的情况时,可以使用它,例如:
1 2 3 4 5 6 7 8
| try:
os.mkdir(r'C:\FooBar')
except FileExistsError:
pass
else:
os.mkdir(r'C:\FooBar\Baz')
finally:
print('Wazoooo') |
pass通常是"待办事项"占位符。python不能有空的代码块,如if condition: (nothing)或空函数,所以您只需将pass放在那里使其有效,pass什么也不做。