簡體   English   中英

為什么Python沒有“continue if”語句?

[英]Why doesn't Python have a “continue if” statement?

我認為這是一個非常易讀的代碼塊,

for i in range(100):
    continue if i % 2 == 0

但它在語法上並不正確。 我們可以在Python中做其他好事,比如

for i in things:
    total += 3 if i % 2 == 0 else 1

或者可能,

return a if b > a else c

為什么我們不能continue if聲明?

流程:

for i in range(100):
    continue if i % 2 == 0

相當於:

for i in range(1, 100, 2):
    ...

或者,更一般地說,:

for i in range(100):
    if i % 2 == 0:
        continue

Python語言設計者有一個投票反對語法變化的歷史,它只提供了略微不同的方法來做同樣的事情(“應該有一種明顯的方法來做”)。

你提到的單線結構的類型

x if cond else y

在這里是一個例外。 它被添加到語言中,以提供一種不易出錯的方式來實現許多用戶已經嘗試使用and / or短路黑客( 來源:Guido )。 野外代碼使用:

cond and x or y

這在邏輯上是不相同的,但對於已經熟悉三元cond ? : x : y用戶來說,這是一個容易犯的錯誤cond ? : x : y cond ? : x : y來自C的cond ? : x : y語法。正確的等價物是:

(cond and [x] or [y])[0]

但是,這很難看。 因此, x if cond else y加上x if cond else y ,則添加表達式x if cond else y的基本原理強於僅僅是方便。

因為x if cond else y實際上是一個表達式 表達式是對值進行求值的語句,在本例中為xy

continue不是一個價值,所以就是這樣。 也,

if cond:
    continue

實際上並不比continue if cond更難或更容易“出錯”,而v = x if cond else y可能比

if cond:
    v = x
else:
    v = y

還有一個事實是,如果我們允許continue if cond ,我們添加一種新的方式來使用這個_ if cond模式,即我們允許它沒有else

有關更多信息: https//docs.python.org/2.5/whatsnew/pep-308.html

Python確實有這樣的東西,語法有點不同。 而不是將“if和”continue“合並為一個語句,如果它的計算結果為true,則將它們分為條件語句(如果,等等)和控制流(繼續,傳遞,中斷等)。代碼示例,語法為:

for i in range(100):
    if i % 2 == 0:
        continue
    else:
        #you could also add an else like this do something else if the 
        #number evaluated to odd

這將繼續進行外循環的下一次迭代。還有其他有用的迭代工具,稱為“控制流工具”。 我將包含一個解釋這個的Python文檔的鏈接。 那里有很多有用的東西,所以請看看。

這里的其他人也提出了單行語法,它也有效。 然而,理解這兩種方法是有益的; 通過這種方式,您可以使代碼盡可能簡單,但如果您的算法將從中受益,您還可以嵌套循環和條件。

快樂的編碼!

https://docs.python.org/3/tutorial/controlflow.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM