按域名瀏覽

如何實現Python Switch Case語句?

簡介

使用過C語言的計算機軟件編程語言工程師,c++,Java編程開發軟件的語言使用了開關case語句。但在Python中,它們不能使用開關case語句,因為它們不是在Python中定義的。

在本文中,我們將重點介紹switch case語句,因為有許多因素可以解釋為什麼switch case語句比if-else語句更占優勢。這些因素是:

  • 與if-else梯子相比,switch語句工作得更快。這是因為編譯器在編譯期間為開關生成了一個跳轉表。作為一個結果,在執行期間,它不是檢查哪個用例得到滿足,而是隻決定必須執行哪個用例。
  • Switch語句比if-else鏈更簡潔。
  • 它們比if-else鏈更好地表達了代碼的語義。
  • 它們比if-else鏈允許的錯誤空間更小。
  • 它們減少了重複,並可能提高性能。
  • 與if-else語句相比,它提供了更強的可讀性。

想象一下,如果程序員有一種編寫代碼的替代方法,而不是Python中那些複雜的if-else語句,那會怎麼樣呢?如果程序員想避免使用If -else語句造成代碼混亂,那麼他們應該考慮在編碼中使用switch case語句。使用switch case語句的優點已經在上麵提到過了。

Python不像C、c++、Java和Ruby那樣提供開關case語句,但它提供了一些使這些語句工作的規定。

例如,Python允許程序員創建代碼片段,其工作方式與其他編程語言中的Python Switch case語句類似。

本文旨在提供在Python中實現開關case語句的方法。

Python中的Switch語句

開關可以定義為一種控製機製,用於測試存儲在變量中的值並執行相應的case語句。switch case語句的功能是在程序中引入控製流,並確保代碼不會被多個“if”語句弄得亂七八糟。因此,代碼看起來勤勉且透明。這個奇妙的編程特性被程序員用來在他們的代碼中實現控製流。switch case語句的工作是將case語句中指定的值與代碼中的變量進行比較。

為什麼Python中沒有switch case語句?

在Python中,由於建議不理想,switch case語句不存在。許多建議都失敗了,因為它們不能很好地使用Python的語法和既定的編碼風格。

大多數編程語言提供開關case函數,因為它們缺乏適當的映射構造,原因是值不能映射到函數。

但在Python中,在映射表(dict)的幫助下,可以將某個值映射到某個函數。在性能方麵,Python字典將比任何其他解決方案都更有效。

在Python中,使用一個切換器來代替switch case函數。在Python中,切換器也稱為字典映射。

在其他語言中,切換用例是根據用戶的輸入執行的,而在切換程序中,可用選項是根據用戶的輸入執行的。

如何實現Python Switch Case語句?

對於用C、c++或Java等語言編寫代碼的程序員來說,Python不支持開關case語句看起來很奇怪。Python提供了許多替代方法,例如字典、Python lambda函數或用於實現開關case語句的Python類。

程序員應該檢查PEP 3103這樣他們就能理解為什麼Python沒有提供switch case語句的確切原因。

什麼是PEP 3103?

在Python中,PEP代表Python增強建議,其中有很多可用的。PEP可以定義為包含Python新特性的文檔。該文檔還為社區記錄了Python的一些方麵,比如設計和風格。

PEP 3103,版本:$Revision$,是一個switch/case語句,創建於2006年6月25日,發布於2006年6月26日。

這個PEP的存在是為了為語法和語義的不同方麵的許多變體引入規範名稱,例如

“選項1”、“學校II”、“選項3”等。

這一建議因得不到民眾的支持而遭到拒絕。

在深入研究這些備選方案之前,最好先看看其他編程語言中switch-case語句的典型功能。

下麵我們來看看用C語言編寫的程序:

——————————————

switch (DayOfWeek){case 1: printf(" %s ",周一);打破;情況2:printf(" %s ",星期二);打破;case 3: printf(" %s ",星期三);打破;case 4: printf(" %s ",周四);打破;case 5: printf(" %s ", Friday);打破; case 6: printf(“%s”, Saturday); break; case 7: printf(“%s”, Sunday); break; default: printf(“Incorrect Day”); break; }

——————————————

解釋

在上麵提到的程序中,如果輸入是“2”,那麼輸出結果將是“Tuesday”,如果輸入是“6”,那麼輸出結果將是“Saturday”。當輸入從1到7,那麼在這種情況下,輸出結果將是“Incorrect Day”。

開關箱功能的備選方案

現在讓我們轉向Python中switch case函數的替代方法,並通過示例學習這些替代方法是如何工作的。

1.使用字典映射

懂得其他編程語言的程序員一定知道字典是如何工作的。為了在內存中存儲一組對象,字典使用鍵-值對。在Python中,當程序員使用字典作為switch-case語句的替代時,鍵-值對的鍵作為case工作。

下麵的例子演示了使用字典實現switch case語句。

在這個程序中,定義了一個函數month()來打印這個月的第幾周。

讓我們先開始創建case語句,然後為每個case編寫單獨的函數。確保編寫了一個函數來處理默認情況。

——————————————

def monday():返回" monday " def tuesday():返回" tuesday " def wednesday():返回" wednesday " def thursday():返回" thursday " def friday():返回" thursday " def friday():返回" friday " def saturday():返回" saturday " def sunday():返回" sunday " def default():返回" Incorrect Day "

——————————————

下一個操作是用Python創建一個字典對象,並存儲程序中定義的所有函數。

——————————————

Switcher = {0: ' monday ', 1: ' tuesday ', 2: ' wednesday ', 3: ' thursday ', 4: ' friday ', 5: ' saturday ', 6: ' sunday ',}

——————————————

在最後一個操作中,將在程序中創建一個開關函數,該函數將接受一個整數作為輸入,執行字典查找,並調用相應的函數。

——————————————

def day(DayOfWeek):返回switch .get(default)()

——————————————

完整的代碼如下所示:

——————————————

def monday():返回" monday " def tuesday():返回" tuesday " def wednesday():返回" thursday " def friday():返回" friday " def saturday():返回" friday " def saturday():返回" saturday " def sunday():返回" Incorrect Day " switcher = {0: ' monday ', 1: ' tuesday ', 2: ' wednesday ', 3: ' thursday ', 4: ' friday ', 5: ' saturday ', 6: ' sunday ',} def Day (DayOfWeek):返回切換器。get(DayOfWeek, default)() print(switch(1)) print(switch(0))

——————————————

以上代碼輸出以下輸出:

——————————————

周二

周一

——————————————

2.使用Python類

Python類也是一種可用的替代方法,可用於在Python中實現開關case語句。

可以將類定義為包含屬性和方法的對象構造函數。

為了理解這種替代方案,讓我們再次使用上麵提到的示例。

在這個過程中,將在Python開關類中定義一個開關方法。

另外,看看這個免費課程Python的陰謀並增強您對python的知識。

例子

在第一個操作中,將在Python開關類中定義一個開關方法,該開關類將接受每月的星期作為參數,然後將其轉換為字符串。

——————————————

返回getattr(self, ' case_ ' + str(DayOfWeek), lambda: default)()

——————————————

注意:在上麵的例子中使用了兩個東西:關鍵字lambda和getattr()方法。

λ關鍵字用於在Python中定義匿名函數。Lambda關鍵字的功能是在用戶輸入無效輸入時調用默認函數。

的功能getattr ()方法是調用Python中的函數。現在讓我們為每種情況創建單獨的函數。

——————————————

def monday(self):返回" monday " def tuesday(self):返回" tuesday " def wednesday(self):返回" wednesday " def thursday(self):返回" thursday " def friday(self):返回" friday " def saturday(self):返回" saturday " def sunday(self):返回" sunday "

——————————————

完整的代碼如下所示:

——————————————

類PythonSwitch: def day(self,DayOfWeek): default = "錯誤的一天"返回getattr(self, ' case_ ' + str(DayOfWeek), lambda: default)() def monday(self):返回" monday " def tuesday(self):返回" tuesday " def wednesday(self):返回" wednesday " def thursday(self):返回" thursday " def thursday(self):返回" thursday " def friday(self):返回" friday " def saturday(self):返回" friday " def saturday(self):返回" saturday " def sunday(self):返回" sunday " my_switch = PythonSwitch() print (my_switch.day(1)) print (my_switch.day(6))

——————————————

上麵的代碼輸出以下輸出

——————————————

周一

周六

——————————————

switch語句的局限性

1.沒有規定在開關,以及在情況下使用浮動常數。

2.在這種情況下不能使用變量表達式。

3.不允許在兩個不同的情況下使用相同的常量。

4.關係表達式不能在這種情況下使用。

結論

本文介紹了什麼是開關case語句,可以使用什麼替代開關case語句,以及如何使用它們。

在本文的學習過程中,我們了解到Python沒有提供內置的switch case語句,但是可以使用這些替代方法使代碼更簡潔,從而獲得更好的性能。

如上所述,Python沒有內置開關case函數的功能,但為了使代碼看起來整潔、幹淨並獲得更好的性能,可以使用這些替代方案。

在本文中,我們已盡最大努力盡可能地提供關於開關用例語句的最佳知識。請在下方評論中分享並提供您對本文的寶貴意見。

《阿凡達》的照片
beplay2018官网
beplay2018官网偉大學習的博客涵蓋了技術的最新發展和創新,可以用來建立有回報的職業生涯。你會找到職業指南、技術教程和行業新聞,讓自己跟上快速變化的科技和商業世界。

請留言評論

您的電郵地址將不會公布。必填項已標記

用夢想的工作免費的印度最值得信賴的教育平台上的證書課程

滾動到頂部
Baidu
map