Python中是沒(méi)有switch的, 所以有時(shí)我們需要用switch的用法, 就只能通過(guò)if else來(lái)實(shí)現(xiàn)了. 但if else寫(xiě)起來(lái)比較冗長(zhǎng),
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:空間域名、網(wǎng)站空間、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、岳西網(wǎng)站維護(hù)、網(wǎng)站推廣。
這時(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).
==================================
將列表傳遞給函數(shù)后,函數(shù)就能直接訪問(wèn)其內(nèi)容
假設(shè)有一個(gè)用戶列表,要問(wèn)候其中的每位用戶
將列表傳遞給函數(shù)后,函數(shù)就可對(duì)其進(jìn)行修改,在函數(shù)中對(duì)這個(gè)列表所做的任何修改都是永久性的
一家為用戶提交的設(shè)計(jì)制作3D打印模型的公司,需要打印的設(shè)計(jì)存儲(chǔ)在一個(gè)列表中,打印后轉(zhuǎn)移到另一個(gè)列表中。
有時(shí)候需要禁止函數(shù)修改列表,為解決這個(gè)問(wèn)題,可想向函數(shù)傳遞列表的副本而不是元件;這樣函數(shù)所做的任何修改都只影響副本,不影響元件
有時(shí)候,預(yù)先布置的函數(shù)需要接受多少個(gè)實(shí)參,python允許函數(shù)從調(diào)用語(yǔ)句中手機(jī)任意數(shù)量的實(shí)參
一個(gè)制作披薩的寒素,它需要接受很多配料,但無(wú)法確定顧客要多少種配料,下面函數(shù)只有一個(gè)形參*toppings,不管調(diào)用語(yǔ)句提供了多少實(shí)參,這個(gè)形參都將他們統(tǒng)統(tǒng)收入囊中
如果要讓函數(shù)接受不同類(lèi)型的實(shí)參,必須在函數(shù)定義中將接納任意數(shù)量實(shí)參的形參放在最后
python先匹配位置實(shí)參和關(guān)鍵字實(shí)參,再將余下的實(shí)參收集到最后一個(gè)形參中
如果前邊的函數(shù)還需要一個(gè)表示披薩尺寸的實(shí)參,必須將該形參放在*toppings的前面
有時(shí)候,需要接受任意數(shù)量的實(shí)參,但預(yù)先不知道傳遞給函數(shù)的會(huì)是射門(mén)楊的信息,再這種情況下,可將函數(shù)編寫(xiě)成能夠接受任意數(shù)量的鍵-值對(duì),調(diào)用語(yǔ)句提供了多少就接受多少
創(chuàng)建用戶簡(jiǎn)介:你知道你將收到有關(guān)用戶的信息,但不確定會(huì)是什么樣的信息,在下面示例中,build_profile()接受名和姓,同時(shí)還接受任意數(shù)量的關(guān)鍵字實(shí)參
函數(shù)注解是關(guān)于用戶自定義的函數(shù)的完全可選的、隨意的元數(shù)據(jù)信息。
1.無(wú)論 Python 本身或者標(biāo)準(zhǔn)庫(kù)中都沒(méi)有使用函數(shù)注解;本節(jié)只是描述了語(yǔ)法。第三方的項(xiàng)目是自由地為文檔,類(lèi)型檢查,以及其它用途選擇函數(shù)注解。
2.注解是以字典形式存儲(chǔ)在函數(shù)的 __annotations__ 屬性中,對(duì)函數(shù)的其它部分沒(méi)有任何影響。參數(shù)注解(Parameter annotations)是定義在參數(shù)名稱的冒號(hào)后面,緊隨著一個(gè)用來(lái)表示注解的值得表達(dá)式。返回注釋?zhuān)≧eturn annotations)是定義在一個(gè) - 后面,緊隨著一個(gè)表達(dá)式,在冒號(hào)與 - 之間。下面的示例包含一個(gè)位置參數(shù),一個(gè)關(guān)鍵字參數(shù),和沒(méi)有意義的返回值注釋:
def f(ham: 42, eggs: int = 'spam') - "Nothing to see here":
... print("Annotations:", f.__annotations__)
... print("Arguments:", ham, eggs)
...
f('wonderful')
Annotations: {'eggs':
, 'return': 'Nothing to see here', 'ham': 42}
Arguments: wonderful spam
當(dāng)前題目:python函數(shù)存儲(chǔ),python存儲(chǔ)數(shù)據(jù)
鏈接URL:http://chinadenli.net/article20/heepjo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、云服務(wù)器、網(wǎng)頁(yè)設(shè)計(jì)公司、App開(kāi)發(fā)、標(biāo)簽優(yōu)化、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容