摘要:默認(rèn)參數(shù)這家伙還是有點(diǎn)點(diǎn)瑕疵的,默認(rèn)參數(shù)必須一定以及肯定得指向不可變對(duì)象。寫完這頑固不化的默認(rèn)參數(shù),就輪到靈活多變的可變參數(shù)上場(chǎng)了。
函數(shù)的參數(shù)
總結(jié)一下這幾種參數(shù)先:本來(lái)位置是默認(rèn)滴,后來(lái)不知咋地可變了,位置上還用關(guān)鍵字這么上檔次的名字命名關(guān)鍵字了。先講講廢話:我們做接口自動(dòng)化或者其它測(cè)試,總之需要使用一些參數(shù)的時(shí)候,我們作為函數(shù)的調(diào)用者,無(wú)需了解太多,你只需要膚淺的知道如何如何滴傳遞準(zhǔn)確無(wú)誤的參數(shù)以及知道函數(shù)將返回什么值即可,這樣就可以完美的完成工作了,至于那些內(nèi)部復(fù)雜的邏輯被封裝起來(lái)了,作為調(diào)用者暫時(shí)就不考慮啦。
(1) 位置參數(shù):顧名思義就是排排坐,按位置賦值就這么簡(jiǎn)單。
先計(jì)算X三次方的值:下面對(duì)于power()函數(shù)而言,參數(shù)x就是位置參數(shù),但有且僅能傳入一個(gè)參數(shù),傳入過(guò)多就是作死的行為了。
如果要計(jì)算X的n次方,就要傳入兩個(gè)參數(shù)了,只要對(duì)應(yīng)位置即可
默認(rèn)參數(shù):作用就是簡(jiǎn)化函數(shù)的調(diào)用,也有需要小心的地方
(1) 必選參數(shù)必須在前,默認(rèn)參數(shù)在后;
(2) 有較多參數(shù)擺在面前時(shí),變化較大參數(shù)在前,變化較小的在后并作為默認(rèn)參數(shù);
比如傳入記錄信息的函數(shù),需要傳入author、tel兩個(gè)參數(shù)
這時(shí)調(diào)用report()函數(shù)后輸入兩個(gè)參數(shù)值即可
當(dāng)然兩個(gè)參數(shù)的對(duì)于那些登錄的賬號(hào)、密碼這操作完全沒(méi)問(wèn)題,但如果是一些表單需要填入住址、電話、婚史、收入等信息,那后期調(diào)用函數(shù)的復(fù)雜度大大增加,所以我們就可以靠默認(rèn)函數(shù)把信息不大變動(dòng)的參數(shù)設(shè)置為默認(rèn)值再進(jìn)行調(diào)用拋磚引玉一番:把地址和收入設(shè)置為默認(rèn)參數(shù)
若是與我們?cè)O(shè)置的默認(rèn)參數(shù)不符合,只能自己動(dòng)動(dòng)手指添加對(duì)應(yīng)的額外信息啦。
默認(rèn)參數(shù)這家伙還是有點(diǎn)點(diǎn)瑕疵的,默認(rèn)參數(shù)必須一定以及肯定得指向不可變對(duì)象。 現(xiàn)在用典型的list來(lái)舉個(gè)例子(因?yàn)檫@家伙內(nèi)容可變)
下面這是老掉牙的正常調(diào)用了,結(jié)果沒(méi)毛病
再用默認(rèn)參數(shù)調(diào)用三次,看結(jié)果就驚呆了,每次出來(lái)的結(jié)果都記住了上次的內(nèi)容,這就很尷尬了。
原因在于L列表是一個(gè)變量并指向[],每調(diào)用一次函數(shù)就會(huì)改變[]里的內(nèi)容(上面提過(guò)了這里的內(nèi)容是可變的),下次再調(diào)用的時(shí)候,默認(rèn)參數(shù)里的內(nèi)容就刷的一下改變了,所以才會(huì)處出現(xiàn)上面尷尬的場(chǎng)景。有矛就有盾:使用None/str等這些不可變對(duì)象來(lái)解決問(wèn)題,使用這些不可變對(duì)象可以大大滴降低修改數(shù)據(jù)導(dǎo)致的錯(cuò)誤,更重要的是在多任務(wù)環(huán)境的情況下,對(duì)象不變,同時(shí)讀取對(duì)象就不需要加鎖,也不會(huì)出現(xiàn)問(wèn)題。
寫完這頑固不化的默認(rèn)參數(shù),就輪到靈活多變的可變參數(shù)上場(chǎng)了。
(2)可變參數(shù):字面上的意思,想要多少個(gè)就多少個(gè)(0到任意個(gè))只需要在參數(shù)前面加個(gè)*就可以輕松搞定啦,來(lái)點(diǎn)干貨:定義一個(gè)函數(shù),輸入任意個(gè)參數(shù),返回參數(shù)數(shù)值之和除以字符數(shù)的結(jié)果。
(3)現(xiàn)在可以坐下來(lái)談?wù)勱P(guān)鍵字參數(shù)啦講這個(gè)之前先了解一下Python內(nèi)置字典dict,使用鍵-值(key-value)進(jìn)行存儲(chǔ),主要是用來(lái)查到內(nèi)容,講到查找就會(huì)不自覺(jué)的想起我們之前相親相愛(ài)的list了。
假設(shè)說(shuō)阿里的員工有幾萬(wàn)人,你要從中查找一個(gè)人所對(duì)應(yīng)的工資,那我們就要先從names中,查找出這個(gè)人的名字的位置,然后工資salary中取出相應(yīng)的工資,這種方式會(huì)因?yàn)閘ist元素的增加導(dǎo)致查找時(shí)間延長(zhǎng);如果用我們機(jī)智的dict,直接用就可以用名字查找工資,盡管這個(gè)表有三千尺,查找速度也是絲毫不會(huì)耽擱。
真槍實(shí)彈才是真理:
這玩意就像字典一樣可以根據(jù)條件查找,也可以收集新的東西進(jìn)去。
并且dict只有一對(duì)一的節(jié)奏,不帶多對(duì)一的形式(key-value)
字典嘛肯定不可能所有東西都能查出來(lái)滴,一旦查不出來(lái)就得報(bào)錯(cuò)了,所以我們就要通過(guò)一些手段來(lái)判斷這個(gè)key存不存在了。
(1) 使用dict提供的get()方法判斷key是否存在以及判斷后返回的內(nèi)容;
(2) 刪除dict中的一個(gè)key就使用pop(key)方法。
好了這個(gè)半路殺出的程咬金就講到這里,小小的總結(jié)一波;
(1) 首先要知道為甚么list查找的速度會(huì)比dict慢的多,就是你拿著字典為了找個(gè)字一種是一頁(yè)一頁(yè)翻著找,另一種是通過(guò)偏旁部首去找,顯而易見(jiàn)肯定后者更快,所以說(shuō)list查找和插入的速度,不會(huì)因?yàn)閗ey賊多就變慢;(2) 有利就有弊,雖然list在查找和插入的速度方面不討喜,但是人家占用的空間少那內(nèi)存基本上就不會(huì)浪費(fèi)了,而dict就是利用空間來(lái)?yè)Q取時(shí)間的做法,極其可恥的浪費(fèi)了極多內(nèi)存;
(3) 還要注意的是dict中的key必須是不可變對(duì)象、不可變對(duì)象、不可變對(duì)象;
(4) 這個(gè)通過(guò)key準(zhǔn)確計(jì)算位置的算法就叫:(Hash)哈希算法。
下面步入正軌
所謂的關(guān)鍵字參數(shù)呢就是允許你可以傳入0-N個(gè)含參數(shù)名的參數(shù)(其中還可寫入必選參數(shù)),并且這些關(guān)鍵字參數(shù)會(huì)很自覺(jué)的組裝成剛剛我們所講的dict
這跟可變參數(shù)就是一個(gè)和兩個(gè)*的區(qū)別。
(5)最后一波進(jìn)攻:命名關(guān)鍵字參數(shù)
(如果傳入的參數(shù)過(guò)多,而在調(diào)用的時(shí)候不需要全部使用就中間插入一個(gè)*,后面的參數(shù)就是你要調(diào)用的,至于前面的就讓他們放飛自我了)
> 要注意的是
(1)使用命名關(guān)鍵字參數(shù)必須要傳入?yún)?shù)名,否則就得炸了。
(2)如果函數(shù)定義中已經(jīng)有一個(gè)可變參數(shù)了,后面的命名關(guān)鍵字參數(shù)就不需要分隔符*了。
下面來(lái)個(gè)對(duì)比操作就一目了然了
直接對(duì)*后的參數(shù)賦值就會(huì)報(bào)錯(cuò)。
來(lái)個(gè)大雜燴例子:
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/41496.html
摘要:表示的通過(guò)方法可以編碼為指定的。有圖有真相沒(méi)看錯(cuò)就是這么簡(jiǎn)單,但是要注意有中文的這種異類是無(wú)法用帥氣的編碼的,因?yàn)橹形木幋a的范圍超過(guò)了編碼所能承受帥氣的范圍,會(huì)報(bào)錯(cuò)。 了解:ASCII編碼(是1個(gè)字節(jié))仍然可以完美滴處理數(shù)字,因?yàn)樽钤绲臅r(shí)候只有127個(gè)字符編入計(jì)算機(jī),但是遇到處理中文1個(gè)字節(jié)就有點(diǎn)捉襟見(jiàn)肘了,這時(shí)候我們就腦殼疼了,所以中國(guó)制定了GB2312編碼,用來(lái)把中文編進(jìn)去;然后各...
摘要:再調(diào)用個(gè)絕對(duì)值內(nèi)置函數(shù)來(lái)加深影響心急吃不了熱豆腐啊有且僅能傳入一個(gè)參數(shù),傳入不符合數(shù)量的參數(shù)就會(huì)報(bào)錯(cuò)誤傳入的參數(shù)數(shù)量是沒(méi)錯(cuò)了,但傳入錯(cuò)誤的參數(shù)類型也是會(huì)死的很慘的。 調(diào)用函數(shù) 干貨:Python官網(wǎng)查看函數(shù)幫助信息 http://docs.python.org/3/libr... showImg(https://segmentfault.com/img/bV71Kn?w=348&h=8...
摘要:同樣的用上節(jié)講的函數(shù)獲取元素的個(gè)數(shù)記住這是獲取的是列表個(gè)數(shù)個(gè)數(shù)個(gè)數(shù)重要的事說(shuō)三遍。用索引訪問(wèn)每個(gè)元素的位置,索引是從開(kāi)始的開(kāi)始的開(kāi)始的索引也是有容忍限度的超過(guò)了就會(huì)原地爆炸報(bào)錯(cuò)如果列表中元素個(gè)數(shù)賊多,想獲取后面的元素就要實(shí)行曲線救國(guó)了。 list和tuple是Python內(nèi)置的有序集合,一個(gè)是可變的,一個(gè)是不可變滴;這都不是事,主要是理解一下指向不變。 看圖說(shuō)話: showImg(ht...
摘要:完整的資料源碼都打包等你來(lái)取哈免費(fèi)滴直接視頻效果展示如下紀(jì)念冊(cè)哪些浪漫至極的表白程序截圖展示如下界面漫天花瓣飛舞。 ?導(dǎo)語(yǔ) 大家好,我是木木子!?? 今日的表白案例上線啦~有沒(méi)有期待?安排安排!源碼基地見(jiàn)免費(fèi)源碼哈! 貼心的木子君也給你們好多愛(ài)心花瓣、以及表白的小程序!在主頁(yè)的左側(cè)哦! 這款...
摘要:理解了輸入輸出,就可以簡(jiǎn)單的打印有意義的程序了比如打印先輸入回車輸入或其它內(nèi)容,存入變量輸入當(dāng)然為了用戶體驗(yàn)更好,可以適當(dāng)?shù)奶砑右恍┨崾拘畔?shù)據(jù)類型和變量整數(shù)常用十六進(jìn)制表示與數(shù)學(xué)上表示方法一樣等。常量不能變的量,通常用大寫字母表示 1、輸出函數(shù):Print() 接受多個(gè)字符串時(shí)用逗號(hào)隔開(kāi)(相當(dāng)于空格),就可連成一串輸出。 showImg(https://segmentfault.co...
閱讀 1958·2021-11-16 11:45
閱讀 3668·2021-09-06 15:02
閱讀 2013·2019-08-30 15:44
閱讀 2283·2019-08-30 11:21
閱讀 1845·2019-08-29 16:31
閱讀 3422·2019-08-29 13:55
閱讀 1895·2019-08-29 12:15
閱讀 3251·2019-08-28 18:05