Python中,if與elif有何區別?

if與elif似乎功能相同。

為何要寫【if sth】,然後【elif sth】;

而不是直接寫成【if sth】,然後接著【if sth】。

elif有什麼別的功能區別於if嗎?


請看

https://github.com/pythonpeixun/article/blob/master/python/learn_python_follow_brother_huang_5.md


若全部用if語句,程序運行時會遍歷所有if(不管每個if後的邏輯運算是否為True)。而用if-elif,程序運行時,只要if或後續某一個elif之一滿足邏輯值為True,則程序執行完對應輸出語句後自動結束該輪if-elif(即不會再去冗餘地執行後續的elif或else)。

程序執行效率更高,在項目越龐大代碼越多的情況下體現越明顯。


是不同的

a = True

b=True

if a:

print(「代碼塊1」)

if b:

print(「代碼塊2」)

代碼塊1和代碼塊2都會被輸出,而再想一下如果是使用elif:

a = True

b=True

if a:

print(「代碼塊1」)

elif b:

print(「代碼塊2」)

只會輸出代碼塊1,而不會輸出代碼塊2了

elif翻譯過來大概是 」否則的話如果...『』


a = 10

if a == 10:

____print "尼瑪"

elif a &> 1:

____print "你大爺"

else:

____print …

print "end"

運行結果

尼瑪

end

-------------------------

a = 10

if a == 10:

____print "尼瑪"

if a &> 1:

____print "你大爺"

____print "end"

運行結果

尼瑪

你大爺

end

爪機,真累了。


如果寫成你說的那樣 if後面接著if,在運行的時候每個if都會執行。影響效率。

其他語言中有switch case這種用法,python沒有switch,但是elif 可以實現這種。

當一個塊里的 if 或者 任何一個elif 判斷為真時,後面的 elif 都不會執行了。


(問題是挺久以前的了,我初學Python,剛好也搜這個問題,回答一下。)

兩者的區別,看使用就好了。

elif是依附於if存在的,兩者的運行邏輯相同,如果僅僅需要一次判斷,則僅用if就行,如果需要多路判斷則在if後面添加數量不等的elif;else是在所有if/elif句判定為FALSE後直接執行的,本身不帶布爾運算式子。


你這個問題很好的說明了elif為什麼要被發明出來。


if - elif中,只要有一個分支為True就會跳出整個 if - elif ,如果使用if會運行每一個if下的代碼。


推薦閱讀:

Abaqus中如何根據不同的材料來創建對應的set?
pycham如何整合pyqt5並安裝qtdesigner?
初學python和機器學習,想知道怎樣才能達到自己獨立編寫程序的能力?
學習TensorFlow,Python 需要掌握到什麼程度才可以?
如何入門Keras?

TAG:Python | 計算機語言 |