【问题标题】:What's the difference between pass and continue in python [duplicate]python中的pass和continue有什么区别[重复]
【发布时间】:2013-12-20 11:31:21
【问题描述】:

我的测试表明passcontinue 都可以等效地用于构造一个空的for 循环用于测试目的。它们之间有什么区别吗?

【问题讨论】:

标签: python for-loop


【解决方案1】:

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

【讨论】:

  • 所以如果它是占位符,我们可以使用注释而不是传递权限
  • @The6thSense 不,如果你有一个空的 for 循环,其中只有一个注释,Python 会感到困惑,因为它会在循环内查找代码。这就是为什么你需要使用 pass 关键字,即使它什么都不做。尝试运行它并查看错误:for i in range(10): # some comment(您将看到IndentationError: expected an indented block)。然后尝试用pass替换评论,就不会再报错了
  • @nickang 谢谢你的信息
【解决方案2】:

pass 什么都不做(无操作),而continue 使控制流继续到循环的下一个循环。

【讨论】:

    【解决方案3】:

    如果循环只包含一个语句,passcontinue 不会有任何区别。但是如果有多个语句,那就很重要了:

    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
    

    区别不是很明显。

    希望这会有所帮助!

    【讨论】:

      【解决方案4】:

      continue 表示“跳到循环体的末尾”。如果是while 循环,则循环继续循环测试;如果是for 循环,则循环继续到它所迭代的任何元素的下一个元素。

      pass 绝对什么都不做。它的存在是因为您必须在空块语句的主体中包含 something,并且 pass 比执行 1None 作为用于该目的的语句更具可读性。

      【讨论】:

        【解决方案5】:

        如果你使用continue,这将导致无限循环:

        i = 0
        while i<1:
           continue  
           i = i + 1
           print i
        

        因为continue 只会进入下一次迭代。但是pass 将适用于这种情况。

        【讨论】:

          【解决方案6】:

          passcontinue 都可以,但可能会造成无限循环。

          例如,以下代码将创建无限循环。

          i = 0
          while i<100:
           continue # replacing continue with pass still creates an infinite loop.
          

          如果你想避免这种情况(也许你打算用循环修改i,但你还没有写代码),使用break

          【讨论】:

            猜你喜欢
            • 2012-03-18
            • 2018-06-06
            • 1970-01-01
            • 1970-01-01
            • 2016-09-15
            • 2018-07-18
            • 1970-01-01
            • 2020-09-13
            • 2017-02-17
            相关资源
            最近更新 更多