Python 使用dict實(shí)現(xiàn)switch的操作
Python3還是沒有switch,可以利用if-else來實(shí)現(xiàn),但是非常不方便。使用dict來實(shí)現(xiàn)會(huì)比較簡潔優(yōu)雅。
# -*- coding: utf-8 -*- """ Python利用dict實(shí)現(xiàn)switch """ def add(x, y): return x + y def subtract(x, y): return x - y def multiply(x, y): return x * y def divide(x, y): assert(y != 0) return x / y mapping = {"+": add, "-": subtract, "*": multiply, "/": divide} def cal(x, y, symbol="+"): assert(symbol in mapping) return mapping.get(symbol)(x, y) if __name__ == "__main__": result = cal(3, 0, "&")
補(bǔ)充:python 字典dict實(shí)現(xiàn)switch case【實(shí)際應(yīng)用】(非dict.get()方法實(shí)現(xiàn))
看了不少帖子,幾乎都是采用字典的.get()方法實(shí)現(xiàn),據(jù)說有個(gè)弊端:“會(huì)將字典每個(gè)帶括號(hào)的方法都執(zhí)行一遍”。
以下方法可避免該弊端,并可以傳參。如有不足請指正!
#!/usr/bin/python3 # conf_cmd = conf_items["cmd"].split(":")[0] test_no = "T1" #test_no = "T2" #test_no = "T3" id = 1 def test1(id): print("test1:%d" % id) def test2(id): print("test2") def test3(id): print("test3") funcs = {"T1": test1, "T2": test2, "T3": test3} try: func = funcs[test_no] func(id) except Exception: pass
輸出:
test1:1
補(bǔ)充:Python實(shí)現(xiàn)類似switch的分支結(jié)構(gòu)
switch語句相信大家都很熟悉,而且swith語句表達(dá)的分支結(jié)構(gòu)比if...elif...else語句表達(dá)更清晰,代碼的可讀性更高,但是在Python中,卻沒有提供這一個(gè)關(guān)鍵字。那我們該如何通過其他方式來實(shí)現(xiàn)這類似的結(jié)構(gòu)呢?
雖然沒有switch語句,但是我們可以通過Python中的dict即字典來實(shí)現(xiàn)類似switch結(jié)構(gòu)的方法
實(shí)現(xiàn)代碼如下:
def operator(o,x,y): result={ '+' : x+y, '-' : x-y, '*' : x*y, '/' : x/y } print(result.get(o)) oper=input()//接收從鍵盤輸入的數(shù)據(jù) operator(oper,4,2)
運(yùn)行效果如下所示:
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
- python switch 實(shí)現(xiàn)多分支選擇功能
- Python通過字典映射函數(shù)實(shí)現(xiàn)switch
- Python為何不支持switch語句原理詳解
- Python基于字典實(shí)現(xiàn)switch case函數(shù)調(diào)用
- Python Switch Case三種實(shí)現(xiàn)方法代碼實(shí)例
- 使用 Python 實(shí)現(xiàn)簡單的 switch/case 語句的方法
- Python分支結(jié)構(gòu)(switch)操作簡介
- Python中實(shí)現(xiàn)switch功能實(shí)例解析
- python中Switch/Case實(shí)現(xiàn)的示例代碼
- 淺談python為什么不需要三目運(yùn)算符和switch
相關(guān)文章
Python繪圖之自定義圖類型控件實(shí)現(xiàn)混合類型圖表
這篇文章主要為大家詳細(xì)介紹了Python如何新建繪圖類型控件,實(shí)現(xiàn)混合類型圖表,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-08-08總結(jié)幾個(gè)非常實(shí)用的Python庫
Python一直被自稱“batteries included”,就是因?yàn)閮?nèi)置了許多非常有用的模塊,無需額外安裝和配置,即可直接使用. 除了內(nèi)建的模塊外,Python還有大量的第三方模塊,直接使用pip安裝即可使用.下面給大家簡單介紹幾個(gè)Python非常實(shí)用的自帶庫和第三方庫,需要的朋友可以參考下2021-06-06python datetime 和時(shí)間戳互相轉(zhuǎn)換問題
time和datetime都是Python中的內(nèi)置模塊(不需要安裝,直接可以使用),都可以對時(shí)間進(jìn)行獲取,對時(shí)間格式進(jìn)行轉(zhuǎn)換,如時(shí)間戳和時(shí)間字符串的相互轉(zhuǎn)換,本文先給大家介紹python datetime 和時(shí)間戳互轉(zhuǎn)問題,感興趣的朋友一起看看吧2022-11-11Fiddler如何抓取手機(jī)APP數(shù)據(jù)包
Fiddler,這個(gè)是所有軟件開發(fā)者必備神器!這款工具不僅可以抓取PC上開發(fā)web時(shí)候的數(shù)據(jù)包,而且可以抓取移動(dòng)端,通過本文給大家介紹Fiddler如何抓取手機(jī)APP數(shù)據(jù)包,感興趣的朋友一起學(xué)習(xí)吧2016-01-01卸載所有通過pip安裝的Python包的方法總結(jié)(Windows系統(tǒng))
這篇文章主要介紹了卸載所有通過pip安裝的Python包的方法總結(jié)(Windows系統(tǒng)),文中通過代碼示例和圖文講解的非常詳細(xì),并具有一定的參考價(jià)值,需要的朋友可以參考下2024-08-08PyQt5實(shí)現(xiàn)界面(頁面)跳轉(zhuǎn)的示例代碼
這篇文章主要介紹了PyQt5實(shí)現(xiàn)界面跳轉(zhuǎn)的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04Python3+Requests+Excel完整接口自動(dòng)化測試框架的實(shí)現(xiàn)
這篇文章主要介紹了Python3+Requests+Excel完整接口自動(dòng)化測試框架的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10