2012-02-28 56 views
136

是否有例子Python中的for循環中的`continue`和`pass`有區別嗎?

for element in some_list: 
    if not element: 
     pass 

for element in some_list: 
    if not element: 
     continue 

我應該知道的兩個Python關鍵字之間continuepass等之間的任何顯著區別?

+4

@ S.Lott:例子:'while true:;在[python docs](http://docs.python.org/tutorial/controlflow.html#pass-statements)中通過#繁忙 - 等待鍵盤中斷(Ctrl + C)'使我感到困惑,我沒有在這種情況下,它沒有發現它的行爲相當於持續,或者其他意圖。第一句話*「通過聲明什麼都不做」*表示我的問題的所有答案,但不知何故,它沒有吸引我的眼球。 – Aufwind 2012-02-28 15:52:05

回答

213

是的,他們做了完全不同的事情。 pass根本什麼也不做,而continue繼續下一個循環迭代。在您的示例中,如果在if之後添加了另一個語句,則區別將變得明顯:在執行pass之後,將執行此更多語句。在continue之後,它不會。

>>> a = [0, 1, 2] 
>>> for element in a: 
...  if not element: 
...   pass 
...  print element 
... 
0 
1 
2 
>>> for element in a: 
...  if not element: 
...   continue 
...  print element 
... 
1 
2 
+2

我完全同意你的答案。但我仍然有問題關於pass關鍵字是否需要?需要但爲什麼?謝謝 – 2015-11-09 02:52:48

+12

@HardikGajjar:由於'pass'關鍵字沒有任何作用,它只在語法上需要縮進套件時纔有用,但不想做任何事情。一個常見的例子是,如果你想忽略一些異常,你可以使用'除了SomeException:pass'。還有很多其他用例。你不會嚴格地需要一個關鍵字,因爲你可以使用任何其他沒有做任何事情的語句(例如'0'是一個完全有效的語句,沒有效果),但是有一個關鍵字可以允許你更明確地表示不想做任何事情。 – 2015-11-11 09:04:35

3

在這些例子中,如果聲明是而不是最後一個循環,那麼他們有非常不同的影響。

6

continue將跳回到循環的頂部。 pass將繼續處理。

如果pass在循環的結尾處,則差異可以忽略不計,因爲無論如何流只會回到循環的頂部。

7

在你的例子中,沒有區別,因爲兩個語句都出現在循環結尾。 pass只是一個佔位符,它不做任何事情(它傳遞給下一個語句)。另一方面,continue有一個確定的目的:它告訴循環到繼續就好像它剛剛重新啓動。

for element in some_list: 
    if not element: 
     pass 
    print element 

for element in some_list: 
    if not element: 
     continue 
    print element 
45

是非常不同的,是有區別的。 continue強制循環在下一次迭代時啓動,而pass表示「沒有代碼要在此執行」,並將繼續循環剩餘部分或循環體。

運行這些,看到了差距:

for element in some_list: 
    if not element: 
     pass 
    print 1 # will print after pass 

for element in some_list: 
    if not element: 
     continue 
    print 1 # will not print after continue 
4

是的,是有區別的。 Continue實際上會跳過當前循環的其餘部分(返回到開頭)。 Pass是一個空白語句,它什麼都不做。

python docs

1

他們之間的差異,
continue跳過循環的當前迭代,並執行下一次迭代。
pass什麼都不做。這是一個空的語句佔位符。
我寧願給你一個例子,這會更好地闡明這一點。

>>> for element in some_list: 
...  if element == 1: 
...   print "Pass executed" 
...   pass 
...  print element 
... 
0 
Pass executed 
1 
2 

>>> for element in some_list: 
...  if element == 1: 
...   print "Continue executed" 
...   continue 
...  print element 
... 
0 
Continue executed 
2 
0
x = [1,2,3,4] 
for i in x: 
    if i==2: 
     pass #Pass actually does nothing. It continues to execute statements below it. 
     print "This statement is from pass." 
for i in x: 
    if i==2: 
     continue #Continue gets back to top of the loop.And statements below continue are executed. 
     print "This statement is from continue." 

輸出是

>>> This statement is from pass. 

同樣,讓運行相同的代碼具有小的改動。

x = [1,2,3,4] 
for i in x: 
    if i==2: 
     pass #Pass actually does nothing. It continues to execute statements below it. 
    print "This statement is from pass." 
for i in x: 
    if i==2: 
     continue #Continue gets back to top of the loop.And statements below continue are executed. 
    print "This statement is from continue." 

輸出是 -

>>> This statement is from pass. 
This statement is from pass. 
This statement is from pass. 
This statement is from pass. 
This statement is from continue. 
This statement is from continue. 
This statement is from continue. 

通行證沒有做任何事情。計算不受影響。但是繼續回到循環的頂部,以便下一次計算。

+3

與已有的其他答案有什麼特別的區別? – 2017-11-07 16:29:16

相關問題