我在学习Python的过程中,我已经到了关于pass语句的部分。我正在使用的指南将其定义为通常用作占位符的空语句。
但我还是不太明白这是什么意思。pass语句将被使用的简单/基本情况是什么?为什么需要它?
我在学习Python的过程中,我已经到了关于pass语句的部分。我正在使用的指南将其定义为通常用作占位符的空语句。
但我还是不太明白这是什么意思。pass语句将被使用的简单/基本情况是什么?为什么需要它?
当前回答
正如书中所说,我只把它用作临时占位符,也就是说,
# code that does something to to a variable, var
if var == 2000:
pass
else:
var += 1
然后填充var == 2000的场景。
其他回答
pass用于避免Python中的缩进错误。
如果我们以C、c++和Java等语言为例,它们有这样的大括号:
if(i==0)
{}
else
{//some code}
但是在Python中,我们使用缩进代替大括号,所以为了避免这样的错误,我们使用pass。
记得你在做测验的时候
if(dont_know_the_answer)
pass
示例程序,
for letter in 'geeksforgeeks':
pass
print 'Last letter: ', letter
除了“我不想要任何东西到这里”的“主要”用途之外,我刚刚发现了一个,假设gen是一个迭代器:
i = 0
obj = None
for i, obj in enumerate(gen):
pass
这将在一次传递中获得gen生成的最后一个对象和gen的长度。(有点类似于C语言中以分号结尾的while循环,仔细想想吧。)
如果你想导入一个模块,如果它存在,并且忽略导入它,如果该模块不存在,你可以使用下面的代码:
try:
import a_module
except ImportError:
pass
# The rest of your code
如果您避免编写pass语句并继续编写其余代码,则会引发IndentationError,因为打开except块后的行没有缩进。
首先,如果你想写一个block,像这样:
if statement:
pass
for i in range(abc):
pass
def func():
pass
pass can是一个占位符。
其次,它可以让你与IDE“交流”: 当你想让你的IDE像这样递减缩进: 如果你的程序写在这里:
class abc(parent):
def __init__(self, params):
self.params=params
if d:
return
else:
return
# cursor in there
现在你的缩进计数是2,但你希望它在下一行是1。 你可以输入一个pass,你的程序是这样的:
class abc(parent):
def __init__(self, params):
self.params=params
if d:
return
else:
return
pass# cursor in there
并返回。它会让你快乐:
class abc(parent):
def __init__(self, params):
self.params=params
if d:
return
else:
return
pass
# cursor in there
现在缩进计数是1。
除了用作未实现函数的占位符外,pass还可以用于填充if-else语句(“显式比隐式好”)。
def some_silly_transform(n):
# Even numbers should be divided by 2
if n % 2 == 0:
n /= 2
flag = True
# Negative odd numbers should return their absolute value
elif n < 0:
n = -n
flag = True
# Otherwise, number should remain unchanged
else:
pass
当然,在这种情况下,可能会使用return而不是赋值,但在需要突变的情况下,这种方法效果最好。
在这里使用pass特别有用,可以警告未来的维护者(包括您自己!)不要将多余的步骤放在条件语句之外。在上面的例子中,在特别提到的两种情况中设置了flag,但在其他情况中没有设置。如果不使用pass,未来的程序员可能会将flag = True移到条件之外,从而在所有情况下设置flag。
另一种情况是经常出现在文件底部的样板函数:
if __name__ == "__main__":
pass
在某些文件中,最好将其与pass一起保留,以便稍后更容易地进行编辑,并明确表示当文件单独运行时不期望发生任何事情。
最后,正如在其他回答中提到的,当异常被捕获时,什么都不做是很有用的:
try:
n[i] = 0
except IndexError:
pass