2020-01-31python學習記錄(2)-函數(shù)&高級語法

函數(shù):

調(diào)用函數(shù):(內(nèi)置函數(shù)置谦、自定義函數(shù))

類型轉換int放坏、str函數(shù)的調(diào)用

簡單的例子:int('123')

定義函數(shù):

python中定義函數(shù)使用 def 語句咙咽,依次是函數(shù)名、括號淤年、括號中的參數(shù)钧敞,還有冒號,然后互亮,在縮進塊中編寫函數(shù)體犁享,函數(shù)的返回值用return語句返回。

簡答的額例子:

空函數(shù):

如果想定義一個什么事也不做的空函數(shù)豹休,可以用pass語句:

def nop():

? ? pass

參數(shù)檢查:

通過傳入?yún)?shù)炊昆,函數(shù)異常報錯,會拋出TypeError類型報錯:

返回多個值:

return x,y

小結:

定義函數(shù)時威根,需要確定函數(shù)名和參數(shù)個數(shù)凤巨;

如果有必要,可以先對參數(shù)的數(shù)據(jù)類型做檢查洛搀;

函數(shù)體內(nèi)部可以用return隨時返回函數(shù)結果敢茁;

函數(shù)執(zhí)行完畢也沒有return語句時,自動return None留美。

函數(shù)可以同時返回多個值彰檬,但其實就是一個tuple

函數(shù)的參數(shù):

普通的參數(shù)定義:

def code(x,y):

注意傳入的額參數(shù),必須按照對應的位置來傳遞參數(shù)谎砾。

默認參數(shù):

def code(x,y=3):

y有默認的值是3 逢倍,所以在傳遞參數(shù)的時候只需要傳遞一個參數(shù)就可以

可變參數(shù):

但是調(diào)用的時候,需要先組裝出一個list或tuple:

定義可變參數(shù)和定義一個list或tuple參數(shù)相比景图,僅僅在參數(shù)前面加了一個*號较雕。在函數(shù)內(nèi)部,參數(shù)numbers接收到的是一個tuple挚币,因此亮蒋,函數(shù)代碼完全不變。但是妆毕,調(diào)用該函數(shù)時慎玖,可以傳入任意個參數(shù),包括0個參數(shù):

def code(*age):

參數(shù)可以通過傳入的不同的值來改變

關鍵參數(shù):

**kw是關鍵字參數(shù)笛粘,kw接收的是一個dict凄吏。

def code(age,**number):

傳參數(shù):

參數(shù)組合:

在Python中定義函數(shù)远舅,可以用必選參數(shù)、默認參數(shù)痕钢、可變參數(shù)、關鍵字參數(shù)和命名關鍵字參數(shù)序六,這5種參數(shù)都可以組合使用任连。但是請注意,參數(shù)定義的順序必須是:必選參數(shù)例诀、默認參數(shù)随抠、可變參數(shù)、命名關鍵字參數(shù)和關鍵字參數(shù)繁涂。

小結

Python的函數(shù)具有非常靈活的參數(shù)形態(tài)拱她,既可以實現(xiàn)簡單的調(diào)用,又可以傳入非常復雜的參數(shù)扔罪。

默認參數(shù)一定要用不可變對象秉沼,如果是可變對象,程序運行時會有邏輯錯誤矿酵!

要注意定義可變參數(shù)和關鍵字參數(shù)的語法:

*args是可變參數(shù)唬复,args接收的是一個tuple;

**kw是關鍵字參數(shù)全肮,kw接收的是一個dict敞咧。

以及調(diào)用函數(shù)時如何傳入可變參數(shù)和關鍵字參數(shù)的語法:

可變參數(shù)既可以直接傳入:func(1, 2, 3),又可以先組裝list或tuple辜腺,再通過*args傳入:func(*(1, 2, 3))休建;

關鍵字參數(shù)既可以直接傳入:func(a=1, b=2),又可以先組裝dict评疗,再通過**kw傳入:func(**{'a': 1, 'b': 2})测砂。

使用*args和**kw是Python的習慣寫法,當然也可以用其他參數(shù)名壤巷,但最好使用習慣用法邑彪。

命名的關鍵字參數(shù)是為了限制調(diào)用者可以傳入的參數(shù)名,同時可以提供默認值胧华。

定義命名的關鍵字參數(shù)在沒有可變參數(shù)的情況下不要忘了寫分隔符*寄症,否則定義的將是位置參數(shù)。

高級特性:

切片:取一個list或tuple的部分元素是非常常見的操作

去出來前面兩個:

[L[0],L[1]]

也可以世界染囟:

L[0:2]

注意這個區(qū)別一下有巧,這個取值是,取前N個元素悲没,也就是索引為0-N的元素篮迎,但是不包括N的值,

還有第一個如果是第一,可以省略甜橱。倒數(shù)第一個索引是 -1

L[:2]

迭代:

通過for循環(huán)來遍歷這個list或tuple逊笆,這種遍歷我們稱為迭代(Iteration)。

在Python中岂傲,迭代是通過for ... in來完成难裆。

列表生成式:

列表生成式即List Comprehensions,是Python內(nèi)置的非常簡單卻強大的可以用來創(chuàng)建list的生成式镊掖。

1乃戈、list(range(1, 11))

2、[x for x in range(1,11)]

3亩进、l2 = []

for t in range(1,10):

l2.append(t)

生成器:

要創(chuàng)建一個generator症虑,有很多種方法。第一種方法很簡單归薛,只要把一個列表生成式的[]改成()谍憔,就創(chuàng)建了一個generators

如果要一個一個打印出來,可以通過next()函數(shù)獲得generator的下一個返回值

可以通過迭代的方打印generator

但是用for循環(huán)調(diào)用generator時苟翻,發(fā)現(xiàn)拿不到generator的return語句的返回值韵卤。如果想要拿到返回值,必須捕獲StopIteration錯誤崇猫,返回值包含在StopIteration的value中:

小結:

generator是非常強大的工具沈条,在Python中,可以簡單地把列表生成式改成generator诅炉,也可以通過函數(shù)實現(xiàn)復雜邏輯的generator蜡歹。

要理解generator的工作原理,它是在for循環(huán)的過程中不斷計算出下一個元素涕烧,并在適當?shù)臈l件結束for循環(huán)月而。對于函數(shù)改成的generator來說,遇到return語句或者執(zhí)行到函數(shù)體最后一行語句议纯,就是結束generator的指令父款,for循環(huán)隨之結束。

請注意區(qū)分普通函數(shù)和generator函數(shù)瞻凤,普通函數(shù)調(diào)用直接返回結果

迭代器:

直接作用于for循環(huán)的數(shù)據(jù)類型有以下幾種:

一類是集合數(shù)據(jù)類型憨攒,如list、tuple阀参、dict肝集、set、str等蛛壳;

一類是generator杏瞻,包括生成器和帶yield的generator function所刀。

這些可以直接作用于for循環(huán)的對象統(tǒng)稱為可迭代對象:Iterable。

可以使用isinstance()判斷一個對象是否是Iterable對象

返回值 True或者False

小結:

凡是可作用于for循環(huán)的對象都是Iterable類型捞挥;

凡是可作用于next()函數(shù)的對象都是Iterator類型浮创,它們表示一個惰性計算的序列;

集合數(shù)據(jù)類型如list砌函、dict蒸矛、str等是Iterable但不是Iterator,不過可以通過iter()函數(shù)獲得一個Iterator對象胸嘴。

參考文獻:https://www.liaoxuefeng.com/wiki/1016959663602400/1017104324028448

個人知乎:https://www.zhihu.com/people/fu-wei-43-69/columns

個人簡書:http://www.reibang.com/u/bf0e38a8d400

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市斩祭,隨后出現(xiàn)的幾起案子劣像,更是在濱河造成了極大的恐慌,老刑警劉巖摧玫,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件耳奕,死亡現(xiàn)場離奇詭異,居然都是意外死亡诬像,警方通過查閱死者的電腦和手機屋群,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坏挠,“玉大人芍躏,你說我怎么就攤上這事〗岛荩” “怎么了对竣?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長榜配。 經(jīng)常有香客問我否纬,道長,這世上最難降的妖魔是什么蛋褥? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任临燃,我火速辦了婚禮,結果婚禮上烙心,老公的妹妹穿的比我還像新娘膜廊。我一直安慰自己,他們只是感情好弃理,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布溃论。 她就那樣靜靜地躺著,像睡著了一般痘昌。 火紅的嫁衣襯著肌膚如雪钥勋。 梳的紋絲不亂的頭發(fā)上炬转,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天,我揣著相機與錄音算灸,去河邊找鬼扼劈。 笑死,一個胖子當著我的面吹牛菲驴,可吹牛的內(nèi)容都是我干的荐吵。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼赊瞬,長吁一口氣:“原來是場噩夢啊……” “哼先煎!你這毒婦竟也來了?” 一聲冷哼從身側響起巧涧,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤薯蝎,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后谤绳,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體占锯,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年缩筛,在試婚紗的時候發(fā)現(xiàn)自己被綠了消略。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡瞎抛,死狀恐怖艺演,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情婿失,我是刑警寧澤钞艇,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站豪硅,受9級特大地震影響哩照,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜懒浮,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一飘弧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧砚著,春花似錦次伶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至舌镶,卻和暖如春柱彻,著一層夾襖步出監(jiān)牢的瞬間豪娜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工哟楷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留瘤载,地道東北人。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓卖擅,卻偏偏與公主長得像鸣奔,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子惩阶,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Python 是一種相當高級的語言挎狸,通過 Python 解釋器把符合語法的程序代碼轉換成 CPU 能夠執(zhí)行的機器碼...
    Python程序媛閱讀 1,904評論 0 3
  • 教程總綱:http://www.runoob.com/python/python-tutorial.html 進階...
    健康哥哥閱讀 2,029評論 1 3
  • # 第一優(yōu)先級規(guī)則聲明: # 除了夢境,每一個意識主進程都必須與一個身體參與的機械進程相匹配断楷,否則結束意識主進程伟叛。...
    李洞BarryLi閱讀 3,853評論 0 1
  • 第5章 函數(shù)和函數(shù)式編程 5.1 引言函數(shù)是組織好的,可重復使用的脐嫂,用來實現(xiàn)單一,或相關聯(lián)功能的代碼段紊遵。函數(shù)...
    VIVAFT閱讀 955評論 0 5
  • 函數(shù) 調(diào)用函數(shù)要調(diào)用一個函數(shù)暗膜,需要知道函數(shù)的名稱和參數(shù)匀奏,比如求絕對值的函數(shù)abs,只有一個參數(shù) 如果對要調(diào)用的函數(shù)...
    朔野閱讀 366評論 0 0