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