【发布时间】:2013-12-20 11:31:21
【问题描述】:
我的测试表明pass 和continue 都可以等效地用于构造一个空的for 循环用于测试目的。它们之间有什么区别吗?
【问题讨论】:
我的测试表明pass 和continue 都可以等效地用于构造一个空的for 循环用于测试目的。它们之间有什么区别吗?
【问题讨论】:
pass 关键字是“无操作”关键字。它什么也不做。它通常用作稍后添加的代码的占位符:
if response == "yes":
pass # add "yes" code later.
另一方面,continue 关键字用于在控制点重新启动循环,例如:
for i in range(10):
if i % 2 == 0:
continue
print(i)
该循环将仅输出奇数,因为 continue 返回循环控制语句 (for) 以进行 i 为偶数的迭代。
与完全相同的代码进行对比,但使用pass 代替continue:
for i in range(10):
if i % 2 == 0:
pass
print(i)
该循环打印所有范围内的数字,因为pass 不会返回到i 的偶数(或任何)值的循环控制语句。它只是直接进入print 语句。
就 empty for 循环而言,您说得对,它们在功能上是相同的。您可以使用以下任何一种:
for i in range(10):
pass
for i in range(10):
continue
【讨论】:
for 循环,其中只有一个注释,Python 会感到困惑,因为它会在循环内查找代码。这就是为什么你需要使用 pass 关键字,即使它什么都不做。尝试运行它并查看错误:for i in range(10): # some comment(您将看到IndentationError: expected an indented block)。然后尝试用pass替换评论,就不会再报错了
pass 什么都不做(无操作),而continue 使控制流继续到循环的下一个循环。
【讨论】:
如果循环只包含一个语句,pass 或 continue 不会有任何区别。但是如果有多个语句,那就很重要了:
for item in my_list:
pass
print(item) #This will be executed
for item in my_list:
continue
print(item) #won't be executed
基本上,pass 语句什么都不做,而 continue 语句将重新开始循环。
但在你的情况下:
for item in my_list:
pass
#Since there's nothing after pass, the loop is finished.
for item in my_list:
continue
#You're restarting the loop
区别不是很明显。
希望这会有所帮助!
【讨论】:
continue 表示“跳到循环体的末尾”。如果是while 循环,则循环继续循环测试;如果是for 循环,则循环继续到它所迭代的任何元素的下一个元素。
pass 绝对什么都不做。它的存在是因为您必须在空块语句的主体中包含 something,并且 pass 比执行 1 或 None 作为用于该目的的语句更具可读性。
【讨论】:
如果你使用continue,这将导致无限循环:
i = 0
while i<1:
continue
i = i + 1
print i
因为continue 只会进入下一次迭代。但是pass 将适用于这种情况。
【讨论】:
pass 和 continue 都可以,但可能会造成无限循环。
例如,以下代码将创建无限循环。
i = 0
while i<100:
continue # replacing continue with pass still creates an infinite loop.
如果你想避免这种情况(也许你打算用循环修改i,但你还没有写代码),使用break。
【讨论】: