python字典實現switch功能
阿新 • • 發佈:2019-02-06
本文內容來源與pythoner網站的學習視訊。
作為學習python的新手,在看相關的資料時,就看到了給c/c++程式的tips:python沒有switch語句。但是程式的設計中是無法避免多選一的情況的,那麼python中沒有switch最直接的替換方法就是用if-else if語句替換實現。
當然像上面由於函式中的程式碼只有一句,還可以簡化程式碼,如下:
顯然這樣的程式碼對後面的條件的程式碼的執行效率不高,需要多次比較才能執行相應的程式碼,並且程式碼的可讀性不高,不簡潔。
switch的本質就是匹配條件去執行程式碼段,而對於腳步語言執行的就是翻譯文字段。那麼利用字典的思路就是把條件(選擇)和操作建立對映作為作為字典中的鍵值對。
作為學習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))
代價就是每次都要重新建立字典,最後最本質的就是理解解釋執行的本質就是對文字語句的掃描執行,只要在相應條件下得到正確的執行語句即可。