[英]how can I use a function to exit for loop
我想寫一個函數來退出for循環。 通常,我們可以
for i in range(10):
if i==8:
break
我希望寫一個像這樣的函數,
def interrupt(i):
if i == val:
...
for i in range(10):
interrupt(i)
編輯
我理解機制以及為什么我現在不能這樣做。 出於好奇,python是否提供了類似'宏擴展'的東西,所以我實際上並沒有創建一個函數,而是一個重新編寫代碼塊的名稱?
你不能。 for
循環繼續,直到在循環中直接遇到顯式break
語句,或者直到迭代器引發StopIteration
。
您可以做的最好的事情是檢查interrupt
的返回值或捕獲由interrupt
引發的異常,並使用該信息來使用是否break
。
我不認為可以休息一下,你可以假裝它有點像這樣:
def interrupt(i):
if i > 2:
return True
return False
for i in range(10):
if interrupt(i):
break
#.. do loop stuff
以下代碼將解決您的問題:
def interrupt(i, pred=lambda x:x==8):
if pred(i):
raise StopIteration(i)
try:
for i in range(10):
interrupt(i)
except StopIteration as e:
print('Exit for loop with i=%s' % e)
# output: Exit for loop with i=8
該方案很簡單,並且通常適用於任何類型的異常:
foo()
,當一個或多個事件發生時,它會引發一個或多個異常 foo()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.