day09-函數(shù)基礎(chǔ)

函數(shù)

1纵穿、什么是函數(shù)

函數(shù)就是對(duì)實(shí)現(xiàn)特定功能的代碼的封裝

2诀拭、函數(shù)的分類

系統(tǒng)函數(shù)(內(nèi)置函數(shù))-- 系統(tǒng)已經(jīng)聲明好的函數(shù)(類似已經(jīng)造好的機(jī)器)簸呈,程序員會(huì)用就行
自定義函數(shù) --程序員自己聲明的函數(shù)(自己造機(jī)器)

3额港、聲明函數(shù)
  1. 語(yǔ)法:
    def 函數(shù)名(形參列表):
    ??函數(shù)說(shuō)明文檔
    ??函數(shù)體
  2. 說(shuō)明:
    def -- python中聲明函數(shù)的關(guān)鍵字(固定格式)
    函數(shù)名 -- 和變量名要求一樣
    (): -- 固定寫法
    形參列表 -- 以'變量名1, 變量名2, 變量名3,...'的形式存在样屠,每個(gè)變量就叫形參
    ?????形參的個(gè)數(shù)根據(jù)情況可以沒有蒿涎,也可以有多個(gè)哀托。
    ?????形參的作用是將函數(shù)外面的數(shù)據(jù)傳遞到函數(shù)里面
    函數(shù)說(shuō)明文檔 -- 用三個(gè)雙引號(hào)引起來(lái)的字符串;作用是對(duì)函數(shù)的功能進(jìn)行說(shuō)明
    函數(shù)體 -- 和def保持一個(gè)縮進(jìn)的一行或者多行語(yǔ)句劳秋。(實(shí)現(xiàn)函數(shù)功能的多條語(yǔ)句)
  3. 初學(xué)者聲明的步驟
    a.確定函數(shù)的功能
    b.根據(jù)函數(shù)的功能的來(lái)確定函數(shù)名
    c.確定函數(shù)的參數(shù):看實(shí)現(xiàn)函數(shù)的功能需不需要從外面?zhèn)髦挡质郑枰獛讉€(gè)?
    d.實(shí)現(xiàn)函數(shù)的功能
注意:聲明函數(shù)的時(shí)候不會(huì)執(zhí)行函數(shù)體
4玻淑、函數(shù)的調(diào)用(調(diào)用函數(shù)相當(dāng)于使用機(jī)器)
  1. 語(yǔ)法:
    函數(shù)名(實(shí)參列表)
  2. 說(shuō)明:
    函數(shù)名 -- 已經(jīng)聲明過(guò)的函數(shù)的函數(shù)名
    () -- 固定寫法
    實(shí)參列表 -- 以'值1, 值2, 值2, ...'形式存在嗽冒;這兒的每個(gè)值就叫實(shí)參;
    實(shí)參是用來(lái)給形參賦值的
# 要求寫一個(gè)函數(shù)實(shí)現(xiàn)兩個(gè)數(shù)的和
def sum_1(x, y):
    """
    求兩個(gè)數(shù)的和
    :param x: 參數(shù)1
    :param y: 參數(shù)2
    :return: 返回參數(shù)1和參數(shù)2的和
    """
    res = x + y
    return res
x = 1
y = 2
print(sum_1(x, y))
5补履、函數(shù)的調(diào)用過(guò)程
  1. 語(yǔ)法:
    函數(shù)名(實(shí)參列表)
  2. 調(diào)用函數(shù)的作用:執(zhí)行函數(shù)體添坊,獲取返回值
  3. 函數(shù)的調(diào)用過(guò)程:
    第一步:回到函數(shù)聲明的位置
    第二步:傳參(用實(shí)參給形參賦值)
    第三步:執(zhí)行函數(shù)體
    第四步:執(zhí)行完函數(shù)體就確定返回值
    第五步:回到函數(shù)調(diào)用的位置,接著往后面執(zhí)行
def sum1(num):
    """
    求前num的和
    :param num: 參數(shù)的值
    :return: 返回前num項(xiàng)的和
    """
    res = 0
    for i in range(num+1):
        res += i
    return res
print(sum1(100))


def str_1(str1):
    """
    打印字符串中所有的字符
    :param str1:傳入一個(gè)字符串
    :return:返回字符串中的每個(gè)字符
    """
    for i in str1:
        if 'a' <= i <= 'z' or 'A' <= i <= 'Z':
            print(i, end='')
str_1("hello world!")


def str_2(str2, char1):
    """
    在字符串中的數(shù)字后面加一個(gè)特殊字符
    :param str2: 傳入一個(gè)帶有數(shù)字的字符串
    :return: 返回一個(gè)在數(shù)字字符后面加=的字符串
    """
    res = ''
    for j in str2:
        if '0' <= j <= '9':
            res += j + char1
        else:
            res += j
    return res
print()
print(str_2('1hello 2world!', '='))
6箫锤、位置參數(shù)和關(guān)鍵字參數(shù)

根據(jù)調(diào)用函數(shù)的時(shí)候傳參的方式將參數(shù)分為位置參數(shù)和關(guān)鍵字參數(shù)

  1. 位置參數(shù):讓實(shí)參和形參在位置上一一對(duì)應(yīng)(第一個(gè)實(shí)參給第一個(gè)形參賦值贬蛙,第二個(gè)實(shí)參給第二個(gè)形參賦值...)
  2. 關(guān)鍵字參數(shù):以'形參名=值'的形式傳參
    注意:如果位置參數(shù)和關(guān)鍵字參數(shù)同時(shí)使用,位置參數(shù)放在前面谚攒,關(guān)鍵字參數(shù)放在后面
  3. 什么時(shí)候使用關(guān)鍵字參數(shù):需要跳過(guò)前面某一個(gè)或幾個(gè)參數(shù)阳准,直接給后面參數(shù)賦值的時(shí)候必須要使用關(guān)鍵字參數(shù)
7、參數(shù)默認(rèn)值

聲明函數(shù)的時(shí)候馏臭,形參可以設(shè)置默認(rèn)值野蝇,設(shè)置完默認(rèn)值后調(diào)用函數(shù)的時(shí)候有默認(rèn)值的參數(shù)可以不用傳參
一個(gè)函數(shù)可以給所有的參數(shù)都設(shè)置默認(rèn)值,也可以給部分參數(shù)設(shè)置默認(rèn)值括儒;但必須保證沒有默認(rèn)值的參數(shù)必須放在有默認(rèn)值參數(shù)的前面

8浪耘、參數(shù)類型說(shuō)明:
  1. 給參數(shù)賦默認(rèn)值,默認(rèn)值的類型就是參數(shù)的類型
  2. 以'參數(shù)名:類型名'的形式聲明函數(shù)
9塑崖、不定長(zhǎng)參數(shù)
  1. 在形參前面加一個(gè)*號(hào)七冲,那么這個(gè)參數(shù)就可以同時(shí)接受多個(gè)實(shí)參(位置參數(shù));帶*的參數(shù)會(huì)作為一個(gè)元組规婆,對(duì)應(yīng)的多個(gè)實(shí)參是元組中的元素
    帶*的不定長(zhǎng)參數(shù)澜躺,不能使用關(guān)鍵字參數(shù)傳參
  2. 在形參前加**蝉稳,那么這個(gè)參數(shù)也可以同時(shí)接受多個(gè)實(shí)參(關(guān)鍵字參數(shù),關(guān)鍵字自己隨便命名)掘鄙;將帶**的參數(shù)作為一個(gè)字典耘戚,將關(guān)鍵字參數(shù)
    的關(guān)鍵字作為key,實(shí)參作為value存儲(chǔ)在字典中。
    *args和**kwargs一起使用是為了保證不定長(zhǎng)參數(shù)傳參的時(shí)候既可以使用位置參數(shù)也可以使用關(guān)鍵字參數(shù)
    補(bǔ)充:*的用法:*列表/*元組 --> 直接取出列表/元組中所有的元素
    **字典 --> 直接取出字典中的所有元素
list1 = [1, 2, 3]
print(*list1)


def func1(a, b):
    print(a, b)
dict1 = {'a': 1, 'b': 2}
func1(**dict1)


練習(xí):聲明一個(gè)函數(shù)操漠,求多個(gè)數(shù)的差
def fun2(*args):
    res = args[0]
    for i in range(len(args)-1):
        res -= args[i+1]
    return res
print(fun2(1, 2, 3, 4))


def fun3(*args):
    if not args:
        return 0
    res = args[0]
    for num in args[1:]:
        res -= num
    return res
print(fun3(1, 2, 3, 4, 5))
10收津、什么是返回值

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

  1. 什么是return
    return是函數(shù)體中的關(guān)鍵字(只能在函數(shù)中使用)浊伙,作用有兩個(gè):結(jié)束函數(shù)和確定函數(shù)返回值
    a.結(jié)束函數(shù):執(zhí)行函數(shù)體的時(shí)候只要遇到return函數(shù)就直接結(jié)束
    b.確定函數(shù)的返回值:return 返回值(可以是具體的數(shù)據(jù)撞秋,聲明過(guò)的變量,運(yùn)算表達(dá)式)
  2. 什么是函數(shù)調(diào)用表達(dá)式
    函數(shù)調(diào)用語(yǔ)句就是函數(shù)調(diào)用表達(dá)式
    每個(gè)調(diào)用函數(shù)的語(yǔ)句都有結(jié)果嚣鄙,這個(gè)結(jié)果就是調(diào)用這個(gè)函數(shù)得到的返回值
11吻贿、怎么使用返回值

想要用函數(shù)的返回值,就是使用函數(shù)調(diào)用表達(dá)式的值
普通數(shù)據(jù)能做的事情哑子,函數(shù)調(diào)用表達(dá)式都可以做

12舅列、什么時(shí)候需要返回值

初學(xué)者:看實(shí)現(xiàn)函數(shù)的功能會(huì)不會(huì)產(chǎn)生新的數(shù)據(jù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市卧蜓,隨后出現(xiàn)的幾起案子帐要,更是在濱河造成了極大的恐慌,老刑警劉巖弥奸,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件榨惠,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡其爵,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門伸蚯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)摩渺,“玉大人,你說(shuō)我怎么就攤上這事剂邮∫』茫” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵挥萌,是天一觀的道長(zhǎng)绰姻。 經(jīng)常有香客問(wèn)我,道長(zhǎng)引瀑,這世上最難降的妖魔是什么狂芋? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮憨栽,結(jié)果婚禮上帜矾,老公的妹妹穿的比我還像新娘翼虫。我一直安慰自己,他們只是感情好屡萤,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布珍剑。 她就那樣靜靜地躺著,像睡著了一般死陆。 火紅的嫁衣襯著肌膚如雪招拙。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天措译,我揣著相機(jī)與錄音别凤,去河邊找鬼。 笑死瞳遍,一個(gè)胖子當(dāng)著我的面吹牛闻妓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播掠械,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼由缆,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了猾蒂?” 一聲冷哼從身側(cè)響起均唉,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎肚菠,沒想到半個(gè)月后舔箭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蚊逢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年层扶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片烙荷。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡镜会,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出终抽,到底是詐尸還是另有隱情戳表,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布昼伴,位于F島的核電站匾旭,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏圃郊。R本人自食惡果不足惜价涝,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望持舆。 院中可真熱鬧飒泻,春花似錦鞭光、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至史辙,卻和暖如春汹买,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背聊倔。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工晦毙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人耙蔑。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓见妒,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親甸陌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子须揣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

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

  • 1.recode 列表,字典钱豁,元祖耻卡,集合 列表(list): [];可變牲尺,有序卵酪;元素是任何類型的數(shù)據(jù)增:appen...
    PythonLi閱讀 220評(píng)論 0 0
  • 1.什么是函數(shù)? 函數(shù)就是對(duì)實(shí)現(xiàn)某一特定功能的代碼塊的封裝 2.函數(shù)的分類: 系統(tǒng)函數(shù)(內(nèi)置函數(shù))- 系統(tǒng)已經(jīng)實(shí)現(xiàn)...
    筱哥家的小跟班閱讀 266評(píng)論 0 0
  • 函數(shù)和對(duì)象 1谤碳、函數(shù) 1.1 函數(shù)概述 函數(shù)對(duì)于任何一門語(yǔ)言來(lái)說(shuō)都是核心的概念溃卡。通過(guò)函數(shù)可以封裝任意多條語(yǔ)句,而且...
    道無(wú)虛閱讀 4,581評(píng)論 0 5
  • 函數(shù)只定義一次蜒简,但可能被執(zhí)行或調(diào)用任意次瘸羡。JS函數(shù)是參數(shù)化的,函數(shù)的定義會(huì)包括一個(gè)稱為形參的標(biāo)識(shí)符列表臭蚁,這些參數(shù)在...
    PySong閱讀 321評(píng)論 0 0
  • 函數(shù)只定義一次最铁,但可能被執(zhí)行或調(diào)用任意次讯赏。JS函數(shù)是參數(shù)化的垮兑,函數(shù)的定義會(huì)包括一個(gè)稱為形參的標(biāo)識(shí)符列表,這些參數(shù)在...
    PySong閱讀 531評(píng)論 0 0