1. 程式人生 > >python字典實現switch功能

python字典實現switch功能

本文內容來源與pythoner網站的學習視訊。
作為學習python的新手,在看相關的資料時,就看到了給c/c++程式的tips:python沒有switch語句。但是程式的設計中是無法避免多選一的情況的,那麼python中沒有switch最直接的替換方法就是用if-else if語句替換實現。
當然像上面由於函式中的程式碼只有一句,還可以簡化程式碼,如下:
if condition1:
	funcA()
else if condition2:
	funcB()
else if condition3
	funcC
...
else:
	default()

顯然這樣的程式碼對後面的條件的程式碼的執行效率不高,需要多次比較才能執行相應的程式碼,並且程式碼的可讀性不高,不簡潔。
switch的本質就是匹配條件去執行程式碼段,而對於腳步語言執行的就是翻譯文字段。那麼利用字典的思路就是把條件(選擇)和操作建立對映作為作為字典中的鍵值對。
{case1:func1,case2:func2}.get(case)() #通過字典呼叫函式
比如對於四則運算的實現如下:
#python 3.3
def add(x,y):
	return x+y
def dec(x,y):
	return x-y
def multi(x,y):
	return x*y
def div(x,y):
	return x/y
operator={'+':add,'-':dec,'*':multi,'/':div}#定義操作和函式名的對映
def calculator(x,o,y):
	return operator.get(o)(x,y)#實現條件選擇,因為字典計算雜湊來匹配,所以不會多次比較
def tst():
	print(calculator(2,'*',3))
if __name__=='__main__':tst()

當然像上面由於函式中的程式碼只有一句,還可以簡化程式碼,如下:

def calculator(x,o,y):	
	return {'+':x+y,'-':x-y,'*':x*y,'/':x/y}.get(o)	
def tst():
	print(calculator(2,'*',3))
代價就是每次都要重新建立字典,最後最本質的就是理解解釋執行的本質就是對文字語句的掃描執行,只要在相應條件下得到正確的執行語句即可。