導航:首頁 > 編程語言 > pythoncase語句

pythoncase語句

發布時間:2022-05-17 21:29:11

㈠ 為什麼python中沒有Switch/Case語句

同於我用過的其它編程語言,Python 沒有 switch / case 語句。為了實現它,我們可以使用字典映射:


這段代碼類似於:


Python 代碼通常比處理 case 的標准方法更為簡短,也可以說它更難理解。當我初次使用 Python 時,感覺很奇怪並且心煩意亂。而隨著時間的推移,在 switch 中使用字典的 key 來做標識符變得越來越習以為常。


函數的字典映射

在 Python 中字典映射也可以包含函數或者 lambda 表達式:


雖然zero和one中的代碼很簡單,但是很多 Python 程序使用這樣的字典映射來調度復雜的流程。


類的調度方法

如果在一個類中,不確定要使用哪種方法,可以用一個調度方法在運行的時候來確定。


很靈活,對吧?

官方說明

官方文檔的解釋說,「用if... elif... elif... else序列很容易來實現 switch / case 語句」。而且可以使用函數字典映射和類的調度方法。

㈡ python語言用什麼來替代switch case語句呢

請問 C語言里switch 的本質是什麼呢?如果你會反匯編的話,你可以自己研究發現,switch實際上有一個hash表,系統是通過查表來實現跳轉的。
弄清這個問題之後,轉到python的話,你就用dict來實現啦
假定輸入in1 執行函數fun1,輸入in2 執行函數fun2,輸入in3 執行函數fun3,

d = {'in1':fun1,'in2':fun2,'in3':fun3}
調用的時候就這么寫啦,arguments是輸入參數

d[x](arguments)

㈢ python里有沒有類似與c語言switch...case...的條件判斷語句

有if 、while循環。if elif else 可以實現你說的這個switch。

num = raw_input('please input number :')
if num < 0:
print 'num 小於 0'
elif num = 0:
print 'num等於0'
elif num >0:
print 'num 大於0'
else:
print 'num 不是數字 '

大體是這么個意思了,數字判斷,要轉換類型。

㈣ 為什麼Python中沒有Switch/Case語句

因為作為一門解釋型語言,switch/case是沒有存在必要的,if/elif/else就可以實現的功能,為什麼要再提供重復的?
if else的得一個if一個if的判斷過去,如果匹配的是最後一個條件,前面所有if都得判斷一遍的。
看過匯編就知道,C語言的switch/case,在case值連續的時候,是可以根據case值直接計算該跳轉的地址的。

㈤ 為什麼Python中沒有Switch/Case語句

同於我用過的其它編程語言,Python 沒有 switch / case 語句。為了實現它,我們可以使用字典映射: 這段代碼類似於: Python 代碼通常比處理 case 的標准方法更為簡短,也可以說它更難理解。當我初次使用 Python 時,感覺很奇怪並且心煩意亂。...

㈥ 在python中沒有switch-case語句

開發者認為switch case語句不好,反正也可以用if else來做乾脆就不支持了

㈦ 請教python里怎麼用字典實現case語句

#coding:utf-8
from __future__ import division
def add(x,y):
return x+y
def cut(x,y):
return x-y
def multi(x,y):
return x*y
def div(x,y):
return x/y
def operator(x,o,y):
if o=="+":
print add(x,y)
elif o=="-":
print cut(x,y)
elif o=="*":
print multi(x,y)
elif o=="/":
print div(x,y)
else:
pass
operator(3,'+',4)

㈧ Python語法教程 條件語句

Python語法教程:條件語句
定義
條件語句就是使用if、elif、else等關鍵詞來判斷某些條件的執行結果(True或者False)來決定執行哪些代碼塊的語句,我們用下面的圖來說明:

在Python中,使用非0或者非空(null)的值作為True的條件判斷,使用0或者空(null)的值作為False的條件判斷;
語法
條件語句的基本寫法如下:
當「判斷條件」成立時,將執行隨後的「執行語句」,「執行語句」是可以有多行的,使用縮進來區分是屬於同一代碼塊的范圍;
elif不是必須要填寫的關鍵詞,當有多個判斷條件存在時,它才將會出現;
舉一個實際的例子:

執行的結果是 15;
要值得注意的是,在Python中,並沒有像C++等編程語言中的「switch/case」關鍵詞,在這里,我們使用上面提到的elif關鍵詞來代替「switch/case」,但是當條件比較多的時候,代碼量太大,並不好維護,此時可以使用字典映射的方法來實現,舉個例子:

當執行num2Str函數時,如果參數是0,則輸出「zero」,如果參數是1,則輸出「one」,如果參數是2,則輸出「two」,如果參數是3,則輸出「three」,除此之外,都輸出「nothing」;
多條件判斷
多條件判斷語句使用關鍵詞「and」或者「or」來連接若干個條件語句進行判斷,「and」的意思是「並且」,「or」的意思是「或者」,也就是說,當用and關鍵詞時,要滿足所有的條件為True,才會執行判斷語句後面的代碼塊,而用or關鍵詞時,只要滿足其中之一為True,就能執行判斷語句後面的代碼塊了,例如:

在這里說一下執行的優先順序,「()」里的優先順序最高,其次是>(大於)、<(小於)等判斷符號,而 and 和 or 的優先順序比判斷符號還要低,也就是說,>(大於)、<(小於)在沒有括弧的情況下,要先於and和or來執行判斷;

㈨ 為什麼Python中沒有Switch/Case語句

不同於我用過的其它編程語言,Python 沒有 switch / case 語句。為了實現它,我們可以使用字典映射:

Python

1
2
3
4
5
6
7

def numbers_to_strings(argument):
switcher = {
0: "zero",
1: "one",
2: "two",
}
return switcher.get(argument, "nothing")

這段代碼類似於:

Python

1
2
3
4
5
6
7
8
9
10
11
12

function(argument){
switch(argument) {
case 0:
return "zero";
case 1:
return "one";
case 2:
return "two";
default:
return "nothing";
};
};

Python 代碼通常比處理 case 的標准方法更為簡短,也可以說它更難理解。當我初次使用 Python 時,感覺很奇怪並且心煩意亂。而隨著時間的推移,在 switch 中使用字典的 key 來做標識符變得越來越習以為常。
函數的字典映射
在 Python 中字典映射也可以包含函數或者 lambda 表達式:

Python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

def zero():
return "zero"

def one():
return "one"

def numbers_to_functions_to_strings(argument):
switcher = {
0: zero,
1: one,
2: lambda: "two",
}
# Get the function from switcher dictionary
func = switcher.get(argument, lambda: "nothing")
# Execute the function
return func()

雖然 zero 和 one 中的代碼很簡單,但是很多 Python 程序使用這樣的字典映射來調度復雜的流程。
類的調度方法
如果在一個類中,不確定要使用哪種方法,可以用一個調度方法在運行的時候來確定。

Python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

class Switcher(object):
def numbers_to_methods_to_strings(self, argument):
"""Dispatch method"""
# prefix the method_name with 'number_' because method names
# cannot begin with an integer.
method_name = 'number_' + str(argument)
# Get the method from 'self'. Default to a lambda.
method = getattr(self, method_name, lambda: "nothing")
# Call the method as we return it
return method()

def number_0(self):
return "zero"

def number_1(self):
return "one"

def number_2(self):
return "two"

很靈活,對吧?
官方說明
官方的解釋說,「用if... elif... elif... else序列很容易來實現 switch / case 語句」。而且可以使用函數字典映射和類的調度方法。
可以說官方的說明並沒有解釋什麼,只是給出了解決方案。換句話說,沒有回答為什麼。我認為其實官方真正想說的是:「Python 不需要 switch / case 語句」。
真的是這樣嗎?
是的。但是還有別的原因。我聽牛人說過,在代碼中 switch/case 語句真的很難調試。
就我個人而言,我發現當運行到大量嵌套的用作代碼分支映射的字典里,上述說法就站不住腳了。想想吧,一個超過100條語句的嵌套字典,和一個嵌套100個以上 case 的 switch/case 代碼塊一樣,都是難以調試的。
字典映射運行更快?
Python 沒有 case 語句,使用其它語言的衡量標準是沒有意義的,因為在某種語言中運行更快並不意味著在另一種語言中也一樣。讓我們繼續。
Python 實現方法的顯著優點
有時候我會遇到 Python 的實現方法比 switch/case 語句更好用的情況,例如在運行的時候,需要從映射里添加或者刪除一些潛在的選項。每當這時,多年來使用字典映射和調度方法的實踐讓我受益匪淺。現在我覺得,我再也無法回到依賴 switch/case 語句的日子了。
結束語
Python 迫使我積累了很多映射的實踐經驗,對我來說是塞翁失馬,焉知非福。沒有 switch/case 語句可用的約束,促使我想到了可能不會用來開發的方法和主意。
有意或無意中,Python 沒有 switch/case 語句已成為一種社會建構,並讓我成為一個更優秀的程序員
綜上所述,所以我認為這種意外的社會構建解釋比官方的「用這個來代替」的說明要好得多。

㈩ 為什麼Python中沒有Switch/Case語句

官方的解釋說,「用if… elif… elif… else序列很容易來實現 switch / case 語句」。而且可以使用函數字典映射和類的調度方法。

可以說官方的說明並沒有解釋什麼,只是給出了解決方案。換句話說,沒有回答為什麼。我認為其實官方真正想說的是:「Python 不需要 switch / case 語句」。

閱讀全文

與pythoncase語句相關的資料

熱點內容
應用加密桌面還顯示頭像咋辦 瀏覽:523
微軟硬碟加密密鑰 瀏覽:156
空調壓縮機和風扇 瀏覽:511
代碼可以編譯運行 瀏覽:918
銀行卡加密碼大全真號 瀏覽:447
單片機測esr 瀏覽:412
app怎麼設置消息功能 瀏覽:916
明詞pdf 瀏覽:427
雲域控伺服器有什麼用 瀏覽:577
位元組和B站程序員 瀏覽:747
app推薦書要怎麼做 瀏覽:303
unix網路編程第一卷 瀏覽:851
c需要pdf 瀏覽:865
超級解壓的美甲 瀏覽:72
安卓手機如何永久取消靜音 瀏覽:722
appstore免密碼支付怎麼關閉 瀏覽:30
域控制器如何備份到另一伺服器 瀏覽:306
騰訊雲應用伺服器可以做什麼 瀏覽:507
二次元表格編程 瀏覽:20
plc編程器保停 瀏覽:963