day9-函數(shù)

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

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

  • 函數(shù)的調(diào)用的過程

第一步:回到函數(shù)聲明的位置
第二步:用實(shí)參給形參賦值(傳參) 傳參一定要保證每個(gè)形參都有值
第三步:執(zhí)行函數(shù)體
第四步:獲取返回值
第五步:回到函數(shù)調(diào)用的位置绕辖,接著往后執(zhí)行

函數(shù)的調(diào)用過程是一個(gè)壓棧的過程
當(dāng)函數(shù)調(diào)用的時(shí)候摇肌,系統(tǒng)會(huì)自動(dòng)的在內(nèi)存中的棧區(qū)間開辟空間,存儲(chǔ)函數(shù)調(diào)用的時(shí)候產(chǎn)生的數(shù)據(jù)
(這里的數(shù)據(jù)包括參數(shù)和在函數(shù)中聲明的變量引镊,當(dāng)函數(shù)調(diào)用完成后會(huì)自動(dòng)銷毀)

2.函數(shù)的參數(shù)

  • 1.根據(jù)實(shí)參分為位置參數(shù)和關(guān)鍵字參數(shù)

a.位置參數(shù)
實(shí)參的位置和形參的位置一一對(duì)應(yīng)

def func1(a, b, c):
    print(a, b, c)


func1(1, 2, 3)

b.關(guān)鍵字參數(shù)
實(shí)參以“形參名=值”的形式來傳參

func1(c=3, b=2, a=1)

位置參數(shù)可以和關(guān)鍵字參數(shù)混合使用
前提:保證每個(gè)參數(shù)都有值;位置參數(shù)必須在關(guān)鍵字參數(shù)前面

func1(1, c=3, b=2)
  • 2.從函數(shù)聲明的角度又有:參數(shù)默認(rèn)值朦蕴,不定長(zhǎng)參數(shù),參數(shù)類型說明

a.參數(shù)的默認(rèn)值
聲明函數(shù)的時(shí)候可以給參數(shù)設(shè)置默認(rèn)值弟头,語法:參數(shù)名 = 默認(rèn)值
如果函數(shù)聲明的時(shí)候參數(shù)有默認(rèn)值吩抓,調(diào)用函數(shù)的時(shí)候,有默認(rèn)值的參數(shù)可以不用賦值
多個(gè)參數(shù) 有默認(rèn)值的參數(shù)一定要放到最后面 否則會(huì)報(bào)錯(cuò)

注意:設(shè)置默認(rèn)值除了可以給參數(shù)一個(gè)默認(rèn)值赴恨,也可以對(duì)參數(shù)的類型進(jìn)行說明

def func(a, b=2, c=3):
    print('a:%d b:%d c:%d' % (a, b, c))


func(10, 20, 30)
func(10, 20)

b.不定長(zhǎng)參數(shù):函數(shù)的參數(shù)不確定(對(duì)應(yīng)位置可以傳任意個(gè)實(shí)參)
在函數(shù)聲明的時(shí)候疹娶,參數(shù)名前加 * ,會(huì)將這個(gè)參數(shù)變成元祖伦连,來獲取多個(gè)參數(shù)的值(通過位置參數(shù)調(diào)用)
在函數(shù)聲明的時(shí)候雨饺,參數(shù)名前加 ** ,會(huì)將這個(gè)參數(shù)變成字典惑淳,來獲取多個(gè)參數(shù)的值(通過關(guān)鍵字參數(shù)來傳參额港,關(guān)鍵字可以隨便命名)

  • 聲明一個(gè)函數(shù),功能是求對(duì)個(gè)數(shù)的和
def sum_num(*num):
    print(sum(num))


sum_num(1, 2, 3, 4)

c.一顆 * 和兩顆 * 一起使用 用來表示不定長(zhǎng)參數(shù)歧焦,調(diào)用的時(shí)候更靈活移斩,
可以用位置參數(shù)傳參,也可以用關(guān)鍵字參數(shù)傳參绢馍,
也可以一起用(位置參數(shù)再去向瓷,關(guān)鍵字參數(shù)在后)
要求:一顆 * 參數(shù)要放在兩顆 * 參數(shù)的前面

def func1(*args, **kwargs):
    print(args, kwargs)


func1()
  • 練習(xí):求多個(gè)數(shù)的和,要求:調(diào)用函數(shù)的時(shí)候可以多樣性
def func2(*args, **kwargs):
    sum1 = 0
    for x in kwargs:
        sum1 += kwargs[x]
    print((sum(args) + sum1))


func2(8, 2, a=1, b=3)
  • 3.參數(shù)類型說明

參數(shù)類型說明只是對(duì)參數(shù)類型進(jìn)行提示舰涌,不會(huì)限制參數(shù)類型

a.設(shè)置默認(rèn)值
b.參數(shù)名后面加冒號(hào)(參數(shù)名:類型名)

注意:類型說明除了說明類型外猖任,還可以做相應(yīng)類型對(duì)應(yīng)的語法提示

可以對(duì)返回值進(jìn)行說明: def func1(a: int) -> int:

def func3(a:int, b= ''):
    print(a, b)

func3(10, 'abc')
func3('abc', 10)

3.函數(shù)的返回值

  • 1.返回值

函數(shù)的返回值就是return關(guān)鍵字后面表達(dá)式的值,就是函數(shù)調(diào)用表達(dá)式的值
python中所有的函數(shù)都有返回值瓷耙,默認(rèn)是None

return - 關(guān)鍵字朱躺,用來返回 返回值刁赖;結(jié)束函數(shù)(當(dāng)函數(shù)在執(zhí)行過程中遇到了return,函數(shù)就直接結(jié)束)
如果函數(shù)體中沒有trturn室琢,函數(shù)會(huì)在函數(shù)體執(zhí)行完后將None作為返回值

函數(shù)調(diào)用表達(dá)式 - 調(diào)用函數(shù)的語句乾闰;當(dāng)函數(shù)調(diào)用完成后,函數(shù)調(diào)用表達(dá)式的結(jié)果就是函數(shù)的返回值

為什么使用返回值:
如果實(shí)現(xiàn)函數(shù)的功能會(huì)產(chǎn)生新的數(shù)據(jù)盈滴,一般都會(huì)將這個(gè)數(shù)據(jù)返回
函數(shù)里打印出來的數(shù)據(jù)會(huì)自動(dòng)銷毀
使用return可以將結(jié)果返回涯肩,防止被銷毀

def func1(m, n):
    print(m, n)
    return 100


def func2(m, n):
    return m + n


def func3(m, n):
    print(m + n)
    return m, n
    print(m, n)


print(func3(1, 2))
  • 2.同時(shí)返回多個(gè)值

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

return 返回值1,返回值2巢钓,...

  • 寫一個(gè)函數(shù)病苗,求多個(gè)數(shù)的和以及平均值
def num_sum(*num):
    return sum(num), sum(num) / len(num)


print(num_sum(1, 2, 3))
x, y = num_sum(1, 2, 3)
print(*num_sum(1, 2, 3))
print(x, y)
a, b = (1, 2)
print(a, b)

運(yùn)行:


image.png

4.返回值的應(yīng)用

  • 1.用函數(shù)調(diào)用表達(dá)式給變量賦值

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

  • 2.通過函數(shù)調(diào)用表達(dá)式使用相關(guān)方法

  • 3.將函數(shù)調(diào)用表達(dá)式作為容器的元素症汹、函數(shù)的參數(shù)硫朦、函數(shù)的返回值

5.匿名函數(shù)

匿名函數(shù)還是函數(shù),除了聲明的語法外背镇,函數(shù)其他語法匿名函數(shù)都支持

  • 1.匿名函數(shù)的聲明
    函數(shù)名 = lambda 參數(shù)列表:返回值

說明:
函數(shù)名 - 變量名
lambda - 關(guān)鍵字
參數(shù)列表 - 和普通函數(shù)的參數(shù)列表的作用和要求一樣
返回值 - 相當(dāng)于普通函數(shù)的return后面的表達(dá)式

冒號(hào)后面的語句屬于函數(shù)體

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

  • 用匿名函數(shù)求兩個(gè)數(shù)的和
my_sum = lambda num1, num2: num1 + num2
print(my_sum(1, 2))
  • 寫一個(gè)匿名函數(shù)咬展,求兩個(gè)數(shù)的最大值
num_max = lambda num1, num2: max(num1, num2)
print(num_max(1, 2))
  • python中的三目運(yùn)算符

C中的三目運(yùn)算符:
條件語句?值1:值2 - 條件語句為True,結(jié)果是值1瞒斩,否則是值2

python中的三目運(yùn)算符:
值1 if 條件語句 else 值2 - 條件語句為True,結(jié)果是值1破婆,否則是值2

x = 10
y = 20
max1 = x if x > y else y
print(max1)
  • 練習(xí):寫一個(gè)匿名函數(shù),獲取字典中指定key對(duì)應(yīng)的值
values = lambda key, dict1: dict1[key]
print(values(2, {2: 1, 'a': 3}))

運(yùn)行:


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末胸囱,一起剝皮案震驚了整個(gè)濱河市祷舀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌烹笔,老刑警劉巖裳扯,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異谤职,居然都是意外死亡饰豺,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門允蜈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來冤吨,“玉大人,你說我怎么就攤上這事陷寝。” “怎么了其馏?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵凤跑,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我叛复,道長(zhǎng)仔引,這世上最難降的妖魔是什么扔仓? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮咖耘,結(jié)果婚禮上翘簇,老公的妹妹穿的比我還像新娘。我一直安慰自己儿倒,他們只是感情好版保,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著夫否,像睡著了一般彻犁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上凰慈,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天汞幢,我揣著相機(jī)與錄音,去河邊找鬼微谓。 笑死森篷,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的豺型。 我是一名探鬼主播仲智,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼触创!你這毒婦竟也來了坎藐?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤哼绑,失蹤者是張志新(化名)和其女友劉穎岩馍,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抖韩,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蛀恩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了茂浮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片双谆。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖席揽,靈堂內(nèi)的尸體忽然破棺而出顽馋,到底是詐尸還是另有隱情,我是刑警寧澤幌羞,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布寸谜,位于F島的核電站,受9級(jí)特大地震影響属桦,放射性物質(zhì)發(fā)生泄漏熊痴。R本人自食惡果不足惜他爸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望果善。 院中可真熱鬧诊笤,春花似錦、人聲如沸巾陕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惜论。三九已至许赃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間馆类,已是汗流浹背混聊。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留乾巧,地道東北人句喜。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像沟于,于是被迫代替她去往敵國和親咳胃。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

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

  • 一旷太、函數(shù) 1.函數(shù)的定義 a.定義 函數(shù)就是對(duì)實(shí)現(xiàn)某一特定功能的代碼段的封裝 b.分類 函數(shù)可以分為內(nèi)置函數(shù)和自定...
    發(fā)家致富靠養(yǎng)豬閱讀 347評(píng)論 0 0
  • 戰(zhàn)馬死了展懈,死在磨坊 龍泉亦掛在墻壁,覆滿灰塵 至今供璧,我還記得 戰(zhàn)馬死前的長(zhǎng)吁存崖,烏蹄 狠狠的踏下,濺起的麥粉 打在我...
    席子楚閱讀 202評(píng)論 0 1
  • 姓名:郭志宏 公司:內(nèi)蒙古金仕頓大酒店 【日精進(jìn)打卡176天】 一睡毒、【知~學(xué)習(xí)】 《六項(xiàng)精進(jìn)》大綱0遍共595遍 ...
    黑山小妖G閱讀 103評(píng)論 0 0
  • 武漢職業(yè)技術(shù)學(xué)院 劉婷婷 作為一名在內(nèi)地求學(xué)的大學(xué)生来惧,我也想說說我的心聲。我從小生活在各民族團(tuán)結(jié)演顾、和諧可親的大家庭...
    小疆有話說閱讀 1,202評(píng)論 0 1