Python 使用dict實(shí)現(xiàn)switch的操作
Python3還是沒有switch,可以利用if-else來實(shí)現(xiàn),但是非常不方便。使用dict來實(shí)現(xiàn)會(huì)比較簡(jiǎn)潔優(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í)行一遍”。
以下方法可避免該弊端,并可以傳參。如有不足請(qǐng)指正!
#!/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)鍵字。那我們?cè)撊绾瓮ㄟ^其他方式來實(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)簡(jiǎn)單的 switch/case 語句的方法
- Python分支結(jié)構(gòu)(switch)操作簡(jiǎn)介
- Python中實(shí)現(xiàn)switch功能實(shí)例解析
- python中Switch/Case實(shí)現(xiàn)的示例代碼
- 淺談python為什么不需要三目運(yùn)算符和switch
相關(guān)文章
Python通過requests模塊實(shí)現(xiàn)抓取王者榮耀全套皮膚
只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不如實(shí)踐帶來的提升快,只有在實(shí)例中才能獲得能力的提升,本篇文章手把手帶你用Python實(shí)現(xiàn)抓取王者榮耀全套皮膚,大家可以在過程中查缺補(bǔ)漏,提升水平2021-10-10
詳解Python中的from..import絕對(duì)導(dǎo)入語句
絕對(duì)導(dǎo)入其實(shí)非常簡(jiǎn)單,即是用from語句在import前指明頂層package名,下面我們通過兩個(gè)例子來詳解Python中的from..import絕對(duì)導(dǎo)入語句2016-06-06
python+numpy按行求一個(gè)二維數(shù)組的最大值方法
今天小編就為大家分享一篇python+numpy按行求一個(gè)二維數(shù)組的最大值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07
pandas缺失值np.nan, np.isnan, None, pd.isnull,&n
本文主要介紹了pandas缺失值np.nan, np.isnan, None, pd.isnull, pd.isna2024-04-04
python PrettyTable模塊的安裝與簡(jiǎn)單應(yīng)用
prettyTable 是一款很簡(jiǎn)潔但是功能強(qiáng)大的第三方模塊,主要是將輸入的數(shù)據(jù)轉(zhuǎn)化為格式化的形式來輸出,這篇文章主要介紹了python PrettyTable模塊的安裝與簡(jiǎn)單應(yīng)用,感興趣的小伙伴們可以參考一下2019-01-01
bluepy 一款python封裝的BLE利器簡(jiǎn)單介紹
這篇文章主要介紹了bluepy 一款python封裝的BLE利器簡(jiǎn)單介紹,bluepy 是github上一個(gè)很好的藍(lán)牙開源項(xiàng)目, 其主要功能是用python實(shí)現(xiàn)linux上BLE的接口。,需要的朋友可以參考下2019-06-06
自動(dòng)化測(cè)試Pytest單元測(cè)試框架的基本介紹
這篇文章主要介紹了Pytest單元測(cè)試框架的基本介紹,包含了Pytest的概念,Pytest特點(diǎn),其安裝流程步驟以及相關(guān)配置流程,有需要的朋友可以參考下2021-08-08
selenium 安裝與chromedriver安裝的方法步驟
這篇文章主要介紹了selenium 安裝與chromedriver安裝的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-06-06

