Python實現(xiàn)switch/case語句
使用if…elif…elif…else 實現(xiàn)switch/case
可以使用if…elif…elif..else序列來代替switch/case語句,這是大家最容易想到的辦法。但是隨著分支的增多和修改的頻繁,這種代替方式并不很好調(diào)試和維護。
使用字典 實現(xiàn)switch/case
可以使用字典實現(xiàn)switch/case這種方式易維護,同時也能夠減少代碼量。如下是使用字典模擬的switch/case實現(xiàn):
def num_to_string(num):
numbers = {
0 : "zero",
1 : "one",
2 : "two",
3 : "three"
}
return numbers.get(num, None)
if __name__ == "__main__":
print num_to_string(2)
print num_to_string(5)
執(zhí)行結(jié)果如下:
two
None
Python字典中還可以包括函數(shù)或Lambda表達(dá)式,代碼如下:
def success(msg):
print msg
def debug(msg):
print msg
def error(msg):
print msg
def warning(msg):
print msg
def other(msg):
print msg
def notify_result(num, msg):
numbers = {
0 : success,
1 : debug,
2 : warning,
3 : error
}
method = numbers.get(num, other)
if method:
method(msg)
if __name__ == "__main__":
notify_result(0, "success")
notify_result(1, "debug")
notify_result(2, "warning")
notify_result(3, "error")
notify_result(4, "other")
執(zhí)行結(jié)果如下:
success
debug warning error
other
通過如上示例可以證明能夠通過Python字典來完全實現(xiàn)switch/case語句,而且足夠靈活。尤其在運行時可以很方便的在字典中添加或刪除一個switch/case選項。
在類中可使用調(diào)度方法實現(xiàn)switch/case
如果在一個類中,不確定要使用哪種方法,可以用一個調(diào)度方法在運行的時候來確定。代碼如下:
class switch_case(object):
def case_to_function(self, case):
fun_name = "case_fun_" + str(case)
method = getattr(self, fun_name, self.case_fun_other)
return method
def case_fun_1(self, msg):
print msg
def case_fun_2(self, msg):
print msg
def case_fun_other(self, msg):
print msg
if __name__ == "__main__":
cls = switch_case()
cls.case_to_function(1)("case_fun_1")
cls.case_to_function(2)("case_fun_2")
cls.case_to_function(3)("case_fun_other")
執(zhí)行結(jié)果如下:
case_fun_1
case_fun_2
case_fun_other
總結(jié)
就個人來說,使用字典來實現(xiàn)switch/case是最為靈活的,但是理解上也有一定的難度。
本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Python摸魚神器之利用樹莓派opencv人臉識別自動控制電腦顯示桌面
這篇文章主要介紹了Python摸魚神器樹莓派opencv人臉識別自動控制電腦顯示桌面,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-09-09
Python實現(xiàn)將n個點均勻地分布在球面上的方法
這篇文章主要介紹了Python實現(xiàn)將n個點均勻地分布在球面上的方法,涉及Python繪圖的技巧與相關(guān)數(shù)學(xué)函數(shù)的調(diào)用,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03
Python中OpenCV?Tutorials?20??高動態(tài)范圍成像的實現(xiàn)步驟
這篇文章主要介紹了OpenCV?Tutorials?20?-?高動態(tài)范圍成像,本文還給大家展示了一種稱為曝光融合的替代方法,它可以產(chǎn)生低動態(tài)范圍的圖像,需要的朋友可以參考下2022-06-06
Python網(wǎng)絡(luò)爬蟲項目:內(nèi)容提取器的定義
本篇文章主要介紹了Python網(wǎng)絡(luò)爬蟲項目,這能有效的節(jié)省程序員的時間,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2016-10-10
Python定時任務(wù)框架APScheduler原理及常用代碼
這篇文章主要介紹了Python定時任務(wù)框架APScheduler原理及常用代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-10-10
聊聊prod()與cumprod()區(qū)別cumsum()
這篇文章主要介紹了prod()與cumprod()區(qū)別cumsum(),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05
Python推導(dǎo)式簡單示例【列表推導(dǎo)式、字典推導(dǎo)式與集合推導(dǎo)式】
這篇文章主要介紹了Python推導(dǎo)式,結(jié)合簡單實例形式分析了Python列表推導(dǎo)式、字典推導(dǎo)式與集合推導(dǎo)式基本使用方法,需要的朋友可以參考下2018-12-12

