Python中是沒(méi)有switch的, 所以有時(shí)我們需要用switch的用法, 就只能通過(guò)if else來(lái)實(shí)現(xiàn)了. 但if else寫(xiě)起來(lái)比較冗長(zhǎng),
成都創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網(wǎng)營(yíng)銷(xiāo)推廣、網(wǎng)站重做改版、廣陵網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、html5、商城系統(tǒng)網(wǎng)站開(kāi)發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為廣陵等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
這時(shí)就可以使用Python中的dict來(lái)實(shí)現(xiàn), 比switch還要簡(jiǎn)潔. 用法如下:
如果是key1的情況就執(zhí)行func1, 如果是key2的情況就執(zhí)行func2...(func1, func2...所有的函數(shù)的參數(shù)形式需要相同),
假設(shè)各個(gè)函數(shù)參數(shù)均為(arg1, arg2):
dictName = {"key1":func1, "key2":func2, "key3":func3"...}#字典的值直接是函數(shù)的名字,不能加引號(hào)dictName[key](arg1, arg2)
示例代碼如下:
#!/usr/bin/python#File: switchDict.py#Author: lxw#Time: 2014/10/05import redef add(x, y): return x + ydef sub(x, y): return x - ydef mul(x, y): return x * ydef div(x, y): return x / ydef main():
inStr = raw_input("Please input the easy expression:(e.g. 1 + 2.But 1 + 2 + 3 are not accepted.\n")
inList = re.split("(\W+)", inStr)
inList[1] = inList[1].strip() print("-------------------------") print(inList) print("-------------------------") #Method 1:
if inList[1] == "+": print(add(int(inList[0]), int(inList[2]))) elif inList[1] == "-": print(sub(int(inList[0]), int(inList[2]))) elif inList[1] == "*": print(mul(int(inList[0]), int(inList[2]))) elif inList[1] == "/": print(div(int(inList[0]), int(inList[2]))) else: pass
#Method 2:
try:
operator = {"+":add, "-":sub, "*":mul, "/":div} print(operator[inList[1]](int(inList[0]), int(inList[2]))) except KeyError: passif __name__ == '__main__':
main()
Output:
PS J:\ python .\switchDict.py
Please input the easy expression:(e.g. 1 + 2.But 1 + 2 + 3 are not accepted.1 + 2
-------------------------['1', '+', '2']-------------------------
3
3PS J:\ python .\switchDict.py
Please input the easy expression:(e.g. 1 + 2.But 1 + 2 + 3 are not accepted.4 - 9
-------------------------['4', '-', '9']-------------------------
-5
-5PS J:\ python .\switchDict.py
Please input the easy expression:(e.g. 1 + 2.But 1 + 2 + 3 are not accepted.6 / 5
-------------------------['6', '/', '5']-------------------------
1
1PS J:\ python .\switchDict.py
Please input the easy expression:(e.g. 1 + 2.But 1 + 2 + 3 are not accepted.1 9 9
-------------------------['1', '', '9', ' ', '9']-------------------------PS J:\ python .\switchDict.py
Please input the easy expression:(e.g. 1 + 2.But 1 + 2 + 3 are not accepted.1 ( 9
-------------------------['1', '(', '9']-------------------------PS J:\
個(gè)人感覺(jué), 如果想用switch來(lái)解決某個(gè)問(wèn)題, 并且每種情況下的操作在形式上是相同的(如都執(zhí)行某個(gè)函數(shù)并且這些函數(shù)有
相同的參數(shù)), 就可以用這種方法來(lái)實(shí)現(xiàn).
Python具備動(dòng)態(tài)導(dǎo)入module并且執(zhí)行其中代碼的能力,所以你只要import你保存的東西就可以,無(wú)需中斷你當(dāng)前的代碼執(zhí)行流。
python函數(shù)的定義可以單獨(dú)保存成文件。
import后, 即可調(diào)用。
自定義函數(shù)可以獨(dú)立存放于python文件中,通過(guò)模塊導(dǎo)入。自定義模塊采用import語(yǔ)句來(lái)進(jìn)行引入,其操作步驟是先導(dǎo)入模塊,再調(diào)用模塊中包含的函數(shù),可將自定義模塊放入當(dāng)前目錄,便于解釋器路徑搜索。