2015-04-20 101 views
-7
for ele in eles: 
    for i in xrange(10): 
     try: 
      #do something 
      break 
     except: 
      continue 
    else: 
     if some condition: 
      continue 
     #do something 

考慮上面的代碼,我知道break將打破內部的for循環,第一continue將繼續爲內循環,那第二continue?哪個循環會繼續?在繼續進行其他的python

+7

爲什麼不嘗試一個例子,看看?不過考慮一下 - 到達'else'塊時內部'for'循環是否還在運行? – jonrsharpe

+0

插入一個'print()',看看哪一個'continue's。 –

+1

我不會做python,我發現很難理解'for'循環中的'else'。但我會猜測它會繼續第一個'for'循環,因爲它是唯一一個仍然在範圍內(從我所知道的) – musefan

回答

0

最新continue生效在外for循環,這表現在以下例子:

>>> for x in [1, 2, 3]: 
...  for y in [4, 5, 6]: 
...   print('x =', x, 'y =', y) 
...  else: 
...   continue 
...  print('here') 
... 
x = 1 y = 4 
x = 1 y = 5 
x = 1 y = 6 
x = 2 y = 4 
x = 2 y = 5 
x = 2 y = 6 
x = 3 y = 4 
x = 3 y = 5 
x = 3 y = 6 

注意,「這裏」被永遠印。

另外,注意的是,內for循環不能以任何方式繼續:當所述迭代器被排出(在我的例子:當所有的y S IN [4, 5, 6]已打印)被執行的else塊和當沒有break語句已經執行。由於迭代器已經耗盡,沒有辦法使它產生更多的值。