函數(shù)

1.函數(shù)

1.1 定義
def 函數(shù)名(參數(shù)列表):
    語(yǔ)句
    return 表達(dá)式

解釋:

def : 函數(shù)代碼塊以def關(guān)鍵字開始

函數(shù)名:遵循標(biāo)識(shí)符規(guī)則

參數(shù)列表:任何傳入函數(shù)的參數(shù)和變量侈贷,必須放在小括號(hào)之間朵耕,使用逗號(hào)分隔葫隙,函數(shù)從函數(shù)的調(diào)用者那里獲取信息【調(diào)用者給函數(shù)傳遞的信息】

():是參數(shù)列表的開始以及結(jié)束

冒號(hào):函數(shù)內(nèi)容【封裝的功能】以冒號(hào)開始统屈,并且縮進(jìn)

語(yǔ)句:函數(shù)封裝的功能

return:一般用于結(jié)束函數(shù),并且返回信息給函數(shù)的調(diào)用者

表達(dá)式:要返回給函數(shù)調(diào)用者的信息

注意:最后的return表達(dá)式可以不寫撑毛,若不寫的情況下默認(rèn)return None

參數(shù)列表 = 參數(shù)1读恃,參數(shù)2,…,參數(shù)n

1.2 函數(shù)的調(diào)用

語(yǔ)法:函數(shù)名([參數(shù)])
若函數(shù)需要此參數(shù)則傳遞代态,不需要?jiǎng)t不傳遞

注意:1.函數(shù)不調(diào)用的時(shí)候寺惫,不執(zhí)行。2.定義函數(shù)寫在上面蹦疑,調(diào)用寫在下面西雀。

1.3 最簡(jiǎn)單的函數(shù)

最簡(jiǎn)單的函數(shù),即無(wú)參數(shù)歉摧、無(wú)返回值的函數(shù)

#定義函數(shù)
def myPrint():
    print("you are a good man")
#調(diào)用函數(shù)
myPrint()
1.4 參數(shù)的傳遞

參數(shù)傳遞的本質(zhì):實(shí)參給形參賦值的過程

傳遞的參數(shù)與函數(shù)參數(shù)列表中的參數(shù)個(gè)數(shù)保持一致

1.5 位置參數(shù)

位置參數(shù)又稱必選參數(shù)

參數(shù)傳遞與其位置有關(guān).位置不能隨意更改艇肴。

[值傳遞]指?jìng)鬟f不可變類型腔呜,一般指string、tuple和number類型

[引用傳遞]一般傳遞的是可變類型再悼,一般指list核畴,dict和set

注意:對(duì)于可變類型來講在函數(shù)中更改傳遞進(jìn)來的參數(shù)的時(shí)候,
會(huì)將其原值也進(jìn)行更改冲九。

說明:引用傳遞的本質(zhì)上還是值傳遞谤草,只不過傳遞的是地址,

1.6 關(guān)鍵字參數(shù)
概念:用于函數(shù)調(diào)用時(shí)莺奸,通過“鍵-值”的形式加以指定丑孩,可以讓函數(shù)更加清晰、容易使用灭贷,同時(shí)也清除了參數(shù)的順序需求

def func(name, age):
    print("I am %s, and I am %d year old"%(name, age))
#一般調(diào)用
func("lili", 18)
#使用關(guān)鍵字參數(shù)
func(age = 18, name = "lili")

關(guān)鍵字參數(shù)之間是不存在先后順序的

當(dāng)賦值的時(shí)候打亂順序温学,只能使用關(guān)鍵字。

當(dāng)位置參數(shù)與關(guān)鍵字參數(shù)同時(shí)存在的時(shí)候甚疟,將關(guān)鍵字參數(shù)寫在位置參數(shù)的后面仗岖。

1.7 默認(rèn)函數(shù)
在定義函數(shù)的時(shí)候,我們?yōu)閰?shù)提供了默認(rèn)值览妖,若調(diào)用函數(shù)的時(shí)候箩帚,
沒有傳此參數(shù),則會(huì)使用默認(rèn)值黄痪,若傳了此參數(shù),則使用傳遞的參數(shù)盔然。
優(yōu)點(diǎn):簡(jiǎn)化了函數(shù)的調(diào)用
def func(name, age=18)
    print("I am %s, and I am %d year old"%(name, age))

#一般的函數(shù)調(diào)用
func('lilei', 19)
#關(guān)鍵字參數(shù)調(diào)用
func(name = 'leilei')
#使用默認(rèn)參數(shù)調(diào)用
func('lili')

使用默認(rèn)參數(shù)的時(shí)候需注意:

1.位置參數(shù)在前桅打,默認(rèn)參數(shù)在后,否則python解釋器會(huì)報(bào)錯(cuò)

2.默認(rèn)參數(shù)必須指向不變對(duì)象(字符串等)愈案,不然像列表這種前面的變化會(huì)影響到后面的輸出結(jié)果挺尾。

3.如何設(shè)置默認(rèn)參數(shù)

當(dāng)函數(shù)有多個(gè)參數(shù)時(shí),把變化大的參數(shù)放在前面站绪,變化小的放在后面遭铺,變化小的可以作為默認(rèn)參數(shù)。

有多個(gè)默認(rèn)參數(shù)的時(shí)候恢准,可以按順序提供默認(rèn)參數(shù)魂挂,當(dāng)不按順序提供參數(shù)的時(shí)候需要使用關(guān)鍵字參數(shù)進(jìn)行調(diào)用。

不定長(zhǎng)參數(shù):
定義函數(shù)的時(shí)候馁筐,不確定會(huì)有多少參數(shù)涂召,這種情況下我們可以使用不定長(zhǎng)參數(shù)來處理。即包裹位置參數(shù)或者包裹關(guān)鍵字參數(shù)
特點(diǎn):能處理比聲明時(shí)候更多的參數(shù)【傳遞多少參數(shù)處理多少參數(shù)敏沉,不傳遞則不處理】
1.8 包裹位置參數(shù)--*args

添加了星號(hào)(*)的變量名會(huì)存放所有 未命名的變量參數(shù)
如果在函數(shù)調(diào)用時(shí)沒有指定參數(shù)果正,它就是一個(gè)空的//元組//

包裹位置參數(shù)實(shí)質(zhì)上就是一個(gè)元組炎码,將傳遞的參數(shù)進(jìn)行收集,
并不是所有的參數(shù)都進(jìn)行收集秋泳,它只收集除位置參數(shù)以外多余的參數(shù)【位置參數(shù)】
1.9 包裹關(guān)鍵字傳遞--**kwargs

本質(zhì):是一個(gè)字典(dict)潦闲,將關(guān)鍵字參數(shù)的變量作為key,將其值作為value迫皱。

收集所有的關(guān)鍵字參數(shù)歉闰。傳遞參數(shù)必須使用關(guān)鍵字傳參。

傳遞規(guī)則:

注意舍杜,參數(shù)定義與調(diào)用的順序必須是:必選參數(shù)【位置參數(shù)】新娜、可變參數(shù)【包裹位置參數(shù)】、默認(rèn)參數(shù)既绩、包裹關(guān)鍵字參數(shù)

1.10匿名函數(shù)

定義:不需要定義函數(shù)名的函數(shù)或者是子程序概龄。

特點(diǎn):匿名函數(shù)不使用def定義函數(shù),而是使用lambda來定義饲握。

1.lambda只是一個(gè)表達(dá)式私杜,函數(shù)體比def簡(jiǎn)單

2.關(guān)鍵字lambda表示匿名函數(shù),冒號(hào)前面的x表示函數(shù)參數(shù).

3.匿名函數(shù)有個(gè)限制,就是只能有一個(gè)表達(dá)式,不用寫return,返回值就是該表達(dá)式的結(jié)果.

好處: 函數(shù)沒有名字,不必?fù)?dān)心函數(shù)名沖突

調(diào)用:把匿名函數(shù)賦值給一個(gè)變量,再利用變量來調(diào)用該函數(shù).

語(yǔ)法:

lambda 參數(shù)1,參數(shù)2救欧,…,參數(shù)n: expression[表達(dá)式]

func = lambda a,b : a+b
print(func(10,20))
'''
需求:求三角形的面積
輸入三角形底邊衰粹,與三角形的高。
'''
mianji = lambda bian,height : bian*height/2
print(mianji(20,10))
print(type(mianji))
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末笆怠,一起剝皮案震驚了整個(gè)濱河市铝耻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蹬刷,老刑警劉巖瓢捉,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異办成,居然都是意外死亡泡态,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門迂卢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來某弦,“玉大人,你說我怎么就攤上這事而克“凶常” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵员萍,是天一觀的道長(zhǎng)亮钦。 經(jīng)常有香客問我,道長(zhǎng)充活,這世上最難降的妖魔是什么蜂莉? 我笑而不...
    開封第一講書人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任蜡娶,我火速辦了婚禮,結(jié)果婚禮上映穗,老公的妹妹穿的比我還像新娘窖张。我一直安慰自己,他們只是感情好蚁滋,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開白布宿接。 她就那樣靜靜地躺著,像睡著了一般辕录。 火紅的嫁衣襯著肌膚如雪睦霎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評(píng)論 1 290
  • 那天走诞,我揣著相機(jī)與錄音副女,去河邊找鬼。 笑死蚣旱,一個(gè)胖子當(dāng)著我的面吹牛碑幅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播塞绿,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼沟涨,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了异吻?” 一聲冷哼從身側(cè)響起裹赴,我...
    開封第一講書人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎诀浪,沒想到半個(gè)月后棋返,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡笋妥,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了窄潭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片春宣。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖嫉你,靈堂內(nèi)的尸體忽然破棺而出月帝,到底是詐尸還是另有隱情,我是刑警寧澤幽污,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布嚷辅,位于F島的核電站,受9級(jí)特大地震影響距误,放射性物質(zhì)發(fā)生泄漏簸搞。R本人自食惡果不足惜扁位,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望趁俊。 院中可真熱鬧域仇,春花似錦、人聲如沸寺擂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)怔软。三九已至垦细,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間挡逼,已是汗流浹背括改。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留挚瘟,地道東北人叹谁。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像乘盖,于是被迫代替她去往敵國(guó)和親焰檩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348