python筆記day8 - 函數(shù)1

一、認識函數(shù)

01缸濒、同樣的功能足丢,相同的代碼需要重復寫很多次

02粱腻、當功能發(fā)生改變了,需要修改多處代碼

1斩跌、函數(shù)的定義

a.函數(shù)就是對實現(xiàn)某一特定代碼段的封裝

b.分類

函數(shù)可以分為內(nèi)置函數(shù)和自定義函數(shù)

內(nèi)置函數(shù):python已經(jīng)聲明好了绍些,程序員直接調(diào)用的函數(shù)。相當于已經(jīng)造好的機器耀鸦,程序員只需要知道機器的功能和使用方法

自定義函數(shù):程序員自己聲明柬批,自己實現(xiàn)功能的函數(shù)⌒涠可以提供給別人用氮帐,也可以自己用。相當于自己設置和創(chuàng)建機器洛姑。

2上沐、函數(shù)的聲明

a.語法:

def 函數(shù)名(形參列表):

函數(shù)說明文檔

函數(shù)體

b.說明:

def - python中聲明函數(shù)的關鍵字

函數(shù)名 - 自己名明。要求:標識符楞艾,不能是關鍵字

PEP8参咙,名字中的字母小寫,多個單詞之間用下劃線隔開

見名知義(看到函數(shù)名硫眯,大概知道函數(shù)的功能)

() - 固定寫法

形參列表 - 形參1蕴侧,形參2,...(可以有一個參數(shù)两入,也可以有多個參數(shù)净宵,也可以沒有)

形參的作用:是從函數(shù)外部,向函數(shù)內(nèi)部傳遞數(shù)據(jù)

: - 固定寫法

函數(shù)說明文檔 - 用來對函數(shù)功能進行說明的注釋裹纳。這個注釋需要用3個雙引號引起來塘娶。

函數(shù)體 - 實現(xiàn)函數(shù)功能的代碼段。

c.初學者函數(shù)聲明的步驟

第一步:確定函數(shù)的功能

第二步:根據(jù)函數(shù)的功能痊夭,確定函數(shù)名

第三步:確定參數(shù),看實現(xiàn)函數(shù)的功能脏里,需不需要額外的數(shù)據(jù)她我。需要幾個數(shù)據(jù)就需要幾個參數(shù)。

第四步:實現(xiàn)函數(shù)的功能

第五步:確定返回值

3迫横、函數(shù)的調(diào)用

(重點)函數(shù)在聲明的時候,不會執(zhí)行函數(shù)體矾踱,只有在調(diào)用的時候才會執(zhí)行呛讲。

a.語法:

函數(shù)名(實參列表)

b.說明:

函數(shù)名 - 必須是已經(jīng)聲明過的函數(shù)

() - 固定寫法

實參列表 - 實參就是給形參賦值(需要傳輸給函數(shù)內(nèi)部的數(shù)據(jù))

目前,形參有多少個吗氏,實參就需要有多少個

二弦讽、函數(shù)的調(diào)用

函數(shù)在聲明的時候不會執(zhí)行往产,只有在調(diào)用的時候才會執(zhí)行函數(shù)體

1、函數(shù)調(diào)用的過程(重點H衿印)

a.物理過程

第一步:回到函數(shù)聲明的位置

第二步:用實參給形參賦值(傳參)傳參一定要保證每個形參都有值

第三步:執(zhí)行函數(shù)體

第四步:返回函數(shù)值

第五步:回到函數(shù)調(diào)用的位置包颁,接著往后執(zhí)行

b.函數(shù)的條用過程是一個壓棧過程

當函數(shù)調(diào)用的時候娩嚼,系統(tǒng)會自動在內(nèi)存中棧間開辟空間岳悟,儲存函數(shù)調(diào)用過程中產(chǎn)生的數(shù)據(jù)

(這的數(shù)據(jù)包括參數(shù)和在函數(shù)的聲明的變量)贵少。當函數(shù)調(diào)用完成后堆缘,對應的內(nèi)存空間會自動銷毀

三吼肥、函數(shù)的參數(shù)

1、根據(jù)實參分為位置參數(shù)和關鍵字參數(shù)

a.位置參數(shù)

實參的位置和形參的位置一一對應

b.關鍵字參數(shù)

實參以"形參-值"的形式來傳參

c.位置參數(shù)和關鍵字參數(shù)混合使用

前提:a.保證每個參數(shù)都有值斗这;b.位置參數(shù)一定要在關鍵字參數(shù)前面

2表箭、從函數(shù)聲明的角度又有:參數(shù)默認值免钻、不定長參數(shù)以及參數(shù)類型說明

a.參數(shù)的默認值

聲明函數(shù)的時候可以給參數(shù)設置默認值,語法:參數(shù)名 = 默認值

注意:設置默認值除了可以給參數(shù)一個默認的值猿涨,也可以對參數(shù)的類型進行說明

如果由的參數(shù)有默認值叛赚,有的參數(shù)沒有默認值俺附,有默認值的參數(shù)一定要放在沒有默認值參數(shù)的后面溪掀;

如果函數(shù)聲明的時候參數(shù)有默認值,調(diào)用函數(shù)的時候璃哟,有默認值的參數(shù)可以不用賦值随闪。

3骚勘、不定長參數(shù)

不定長參數(shù):聲明函數(shù)的時候,函數(shù)的參數(shù)不確定

01.在聲明函數(shù)的時候当宴,參數(shù)名的前面加一個*户矢,會將這個參數(shù)變成元組殉疼,來獲取多個實參的值(位置參數(shù)傳參)

調(diào)用參數(shù)是不定長參數(shù)的函數(shù)的時候株依,不定長參數(shù)對應的位置恋腕,可以傳任意個實參

02.在聲明函數(shù)的時候逆瑞,參數(shù)名的前面加兩個*,會將這個參數(shù)變成字典哈肖,來獲取多個實參的值(必須使用關鍵字參數(shù))

注意:如果是調(diào)用不定長參數(shù)(參數(shù)后面加了兩顆*)淤井,調(diào)用的時候關鍵字可以隨便命名

03.一顆*和兩顆*一起使用,用來表示不定長參數(shù)游两〖福可以用位置參數(shù)傳參宝踪,也可以用關鍵字參數(shù)碍扔,也可以兩個一起用。

要求:一顆*的參數(shù)要放在兩顆*參數(shù)的前面

4颤芬、參數(shù)類型說明

參數(shù)類型說明 - 只是對參數(shù)類型進行提示站蝠,不能限制參數(shù)類型

a.設置默認值

b.參數(shù)名:類型名

注意:類型說明除了說明類型意外菱魔,還可以做相應類型對應的語法提示澜倦。

對函數(shù)的返回值進行類型說明:

def 函數(shù)名(參數(shù)列表) -> 返回值類型:

四藻治、函數(shù)的返回值

1桩卵、返回值

a.函數(shù)的返回值就是return關鍵字后面表達式的值,就是函數(shù)調(diào)用表達式的值胜嗓。

b.python中國所有的函數(shù)都有返回值辞州,默認是None。

return - 關鍵字:返回返回值变过;結(jié)束函數(shù)(當在執(zhí)行函數(shù)體的時候牵啦,遇見return哈雏,直接結(jié)束函數(shù))。

如果函數(shù)體中沒有return裳瘪,函數(shù)會在函數(shù)體執(zhí)行完成后將None作為返回值彭羹。

函數(shù)調(diào)用表達式 - 調(diào)用函數(shù)的語句派殷;當函數(shù)調(diào)用完成后函數(shù)調(diào)用表達式的結(jié)果就是函數(shù)的返回值毡惜。

看一個函數(shù)的返回值斯撮,永遠只看是否遇到eturn勿锅,遇到了就是return后面的值溢十,遇不到就是None。

例子:def func5():

print("hello")

返回值為 None

返回值的作用:就是將在函數(shù)內(nèi)部產(chǎn)生的數(shù)據(jù)荒典,傳遞到函數(shù)的外部种蝶,防止在函數(shù)調(diào)用完成后被銷毀螃征。

什么時候使用返回值:如果實現(xiàn)函數(shù)的功能會產(chǎn)生新的數(shù)據(jù)盯滚,一般都會講這個數(shù)據(jù)返回魄藕。

2背率、同時返回多個值

python的函數(shù)支持返回多個值

return 返回值1寝姿,返回值2饵筑,返回值3....

五处坪、返回值的應用

返回值能做的事情玄帕,函數(shù)調(diào)用表達式都可以做

1、函數(shù)表達式給變量賦值

def func1():

return "hello"

str1 = "hello"

2塞椎、通過函數(shù)調(diào)用表達式桨仿,使用相應的方法

def func2():

return[1,2]

item = func2()[0]

3、將函數(shù)調(diào)用表達式作為容器的元素案狠、函數(shù)的參數(shù)服傍、函數(shù)的返回值

def func3():

return 100

作為值參加運算

print(func3+3)

作為列表元素

list2 = [func3(),"abc"]

作為字典的key和value

dict1 = {func3():func3()}

作為函數(shù)的返回值

def func4(m):

print(m)

func4(func3())

作為函數(shù)的實參

re =? func4(func3())

print(re)? # None

六、匿名函數(shù)

匿名函數(shù)還是函數(shù)骂铁,除了聲明的語法以外吹零,函數(shù)其他的語法匿名函數(shù)都支持

1、匿名函數(shù)的聲明

a.語法:

函數(shù)名 = lambda 參數(shù)列表:返回值

b.說明:

函數(shù)名 - 變量名

lambda - 關鍵字

參數(shù)列表 - 和普通函數(shù)的參數(shù)列表的作用和要求是一樣的

返回值 - 相當于普通函數(shù)return關鍵字后面的表達式

注意:匿名函數(shù)中冒號后面的語句屬于函數(shù)體拉庵。在聲明的時候不會執(zhí)行

匿名函數(shù)的調(diào)用和普通函數(shù)一模一樣

# 用匿名函數(shù)求兩個數(shù)的和

def my_sum(num1,num2):

returm num1 + num2

my_sum = lambda num1,num2 : num1+num2

#寫一個匿名函數(shù)灿椅,求兩個數(shù)中的最大值

my_max = lambda num1,num2 : max(num1,num2)

my_max2 = lambada num1,num2 : num1 if num1>num2 else num2

補充:python中的三目運算符

a.

C中的三目運算符:條件語句?值1:值2;? -? 條件語句為True,整個表達式的結(jié)果是指1茫蛹,否則是指2.

int x = 10 ,y = 20;

max = x>y?x:y;

b.

python中的三目運算符: 值1 if 條件語句 else 值2? -? 條件語句為True婴洼,整個表達式的結(jié)果是指1欢唾,否則是指2.

x = 10

y = 20

max1 = x if x>y else y

#寫一個匿名函數(shù)肩刃,獲取指定字典中,指定的key對應的值

my_value = lambda dict1,key:dict1[key]

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末疮茄,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡晃听,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進店門砂竖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事护盈√垂欤” “怎么了?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵衰伯,是天一觀的道長尽爆。 經(jīng)常有香客問我,道長崇摄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任腐巢,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘挨厚。我一直安慰自己牲阁,他們只是感情好,可當我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著疙描,像睡著了一般久又。 火紅的嫁衣襯著肌膚如雪脉执。 梳的紋絲不亂的頭發(fā)上戒劫,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的破镰。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼习寸,長吁一口氣:“原來是場噩夢啊……” “哼胶惰!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起霞溪,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤孵滞,失蹤者是張志新(化名)和其女友劉穎中捆,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體坊饶,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡泄伪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了匿级。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蟋滴。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖痘绎,靈堂內(nèi)的尸體忽然破棺而出津函,到底是詐尸還是另有隱情,我是刑警寧澤孤页,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布尔苦,位于F島的核電站,受9級特大地震影響行施,放射性物質(zhì)發(fā)生泄漏允坚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一蛾号、第九天 我趴在偏房一處隱蔽的房頂上張望稠项。 院中可真熱鬧,春花似錦须教、人聲如沸皿渗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至划乖,卻和暖如春贬养,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背琴庵。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工误算, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人迷殿。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓儿礼,卻偏偏與公主長得像,于是被迫代替她去往敵國和親庆寺。 傳聞我的和親對象是個殘疾皇子蚊夫,可洞房花燭夜當晚...
    茶點故事閱讀 44,601評論 2 353

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