day09-總結(jié)

1.什么是函數(shù)

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

2.函數(shù)的分類

系統(tǒng)函數(shù):(內(nèi)置函數(shù)) - 系統(tǒng)已經(jīng)聲明好的函數(shù)趁窃,列如print盆佣、input隶糕、sum....

自定義函數(shù) - 程序員自己聲明的函數(shù)

3.聲明函數(shù)

1)語(yǔ)法:

def 函數(shù)名(參數(shù)列表):
(函數(shù)說(shuō)明文檔)
函數(shù)體

2)說(shuō)明:

def - python中聲明函數(shù)的關(guān)鍵字(固定寫法)
函數(shù)名 - 和變量名的要求一樣(和內(nèi)置函數(shù)名不要重復(fù)尚揣,否則會(huì)導(dǎo)致內(nèi)置函數(shù)無(wú)法使用)
(): - 固定寫法
形參列表 - 變量名1, 變量名2, ....... 以這種形式存在抑堡,每個(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)的實(shí)現(xiàn)函數(shù)功能的一行或者多行語(yǔ)句。

3)聲明函數(shù)的步驟:

a.確定函數(shù)的功能
b.根據(jù)函數(shù)功能確定函數(shù)名
c.確定函數(shù)的參數(shù):看實(shí)現(xiàn)函數(shù)的功能需不需要從外面?zhèn)髦凳籽枰獛讉€(gè)
d.實(shí)現(xiàn)函數(shù)功能
e.確定返回值

注意:聲明函數(shù)不會(huì)執(zhí)行函數(shù)體

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

1)語(yǔ)法

函數(shù)名(實(shí)參列表)
2)說(shuō)明
函數(shù)名 - 要使用的函數(shù)的函數(shù)名
() - 固定寫法
實(shí)參列表 - 值1, 值2, ... 以這種方式存在偎漫,代表每個(gè)實(shí)參;實(shí)參的作用就是給每個(gè)形參賦值的

同一個(gè)函數(shù)可以調(diào)用多次

# 寫一個(gè)函數(shù)有缆,求兩個(gè)數(shù)的和并且打印

def sum_n_m(n, m):
    """
    求兩個(gè)數(shù)的和
    :param n: 求和數(shù)1象踊,int, float
    :param m: 求和數(shù)2,int棚壁,
    :return: 
    """""
    return n + m


print(sum_n_m(1, 2))

def sum_n(n):
    """
    求0~ n-1 的累加
    :param n:
    :return:
    """
    sum1 = 0
    for num in range(n):
        sum1 += num
    return sum1

print(sum_n(5))

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

1)語(yǔ)法

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

2)地哦啊用函數(shù)的作用:執(zhí)行函數(shù)體杯矩;獲取函數(shù)返回值

3)函數(shù)調(diào)用過程:

函數(shù)調(diào)用
一:回到函數(shù)聲明的位置
二:傳參(用實(shí)參給形參賦值)
三:執(zhí)行函數(shù)體
四:確定返回值
五:回到函數(shù)調(diào)用處接著往下執(zhí)行

# 聲明一個(gè)函數(shù),實(shí)現(xiàn)求1+.....+N的和
def sum_n(n):
    sum_all = 0
    for i in range(1, n + 1):
        sum_all += i
    print(sum_all)
# 聲明一個(gè)函數(shù)袖外,打印字符串中所有的字母字符
def print_str(str1):
    str2 = ''
    for i in str1:
        if 'a' <= i <= 'z' or 'A' <= i <= 'Z':
            str2 += i
    print(str2)
# 聲明一個(gè)函數(shù)史隆,在指定的字符串中數(shù)字字符后面都添加一個(gè)指定的字符
def add_str(str1, str2):
    str3 = ''
    for i in str1:
        if '0' <= i <= '9':
            str3 += i + str2
        else:
            str3 += i
    print(str3)
sum_n(100)
print_str("sd132dad")
add_str("dad1a2a3", '+')

1.位置參數(shù)和關(guān)鍵字參數(shù)

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

1)位置參數(shù):讓實(shí)參和形參在位置上一一對(duì)應(yīng)(每一個(gè)實(shí)參給相對(duì)應(yīng)的形參賦值)

2)關(guān)鍵字參數(shù):以'形參名 = 值'的形式傳參

3)什么時(shí)候使用關(guān)鍵字參數(shù):需要跳過前面某個(gè)或某幾個(gè)參數(shù),直接給后面某個(gè)參數(shù)賦值的時(shí)候必須使用關(guān)鍵字參數(shù)

注意:位置參數(shù)和關(guān)鍵字參數(shù)同時(shí)使用曼验,位置參數(shù)寫在前面泌射,關(guān)鍵字參數(shù)寫在后面
def func1(a, b, c):
    print('a: {}, b: {}, c: {}'.format(a, b, c))

func1(10, 11, 12)

func1(a=10, b=11, c=12)
func1(b=11, a=10, c=12)

func1(10, b=11, c=12)

參數(shù)默認(rèn)值

聲明函數(shù)的時(shí)候,形參可以設(shè)置默認(rèn)值鬓照。
(設(shè)置完默認(rèn)值后調(diào)用函數(shù)的時(shí)候幽默任職的參數(shù)可以不用傳參,也可以傳遞參數(shù)熔酷,傳參之后會(huì)覆蓋默認(rèn)值)
注意:一個(gè)函數(shù)可以給所有的形參設(shè)置默認(rèn)值,也可以給部分形參設(shè)置默認(rèn)值颖杏;
但是必須保證沒有默認(rèn)值的參數(shù)必須放在有默認(rèn)值參數(shù)的前面

def func2(a=111, b=121, c=131):
    print('a: {}, b: {}, c: {}'.format(a, b, c))


func2(100, 200)
func2(100)
func2(100, 200, 300)
func2()
func2(100, c=300)

3.參數(shù)類型說(shuō)明

1)給參數(shù)賦默認(rèn)值纯陨,默認(rèn)值的類型就是參數(shù)的類型
2)以'參數(shù)名:類型名'的形式聲明函數(shù)
def func3(a, b: str, c=10.0):
    print('a: {}, b: {}, c: {}'.format(a, b, c))


func2(100, '200', 300)

func3(1, 's', 3)


def func4(x: list):
    x.append(100)

4.不定長(zhǎng)參數(shù)

1)在形參的前面加,那么這個(gè)參數(shù)就可以接受多個(gè)位置參數(shù) (參數(shù) ->會(huì)作為一個(gè)元組,對(duì)應(yīng)的多個(gè)實(shí)參是元祖中的元素)

注意:帶*的參數(shù)不能使用關(guān)鍵字參數(shù)傳參

2)在形參的前面加翼抠,這個(gè)參數(shù)可以接受多個(gè)關(guān)鍵字參數(shù)(關(guān)鍵字自己命名)將帶的參數(shù)作為一個(gè)字典咙轩,將關(guān)鍵字參數(shù)的關(guān)鍵字作為key實(shí)參作為value存儲(chǔ)在字典中

def func(*args, **kwargs) 可以用位置參數(shù)傳參,也可以用關(guān)鍵字傳參阴颖,也可以同時(shí)使用位置參數(shù)和關(guān)鍵字參數(shù)
# 寫一個(gè)函數(shù)活喊,計(jì)算多個(gè)數(shù)的和
def sum_all(*nums):
    sum1 = 0
    for i in nums:
        sum1 += i
    print(sum1)


sum_all(1, 2, 3, 4)


def func5(a, b, *nums):
    print(a, b, nums)


def func6(**nums):
    print(nums)


func6(a=1, b=2)  # {'a': 1, 'b': 2}


def func7(*args, **kwargs):
    print(args, kwargs)
    pass


func7(1, 2)
func7(a=1, b=2)
func7(2, 4, a=1, b=2)
補(bǔ)充:*的用法
解列表或元組包(取出列表或元組所有的元素)
**的用法
解字典的包(取出字典中的所有值,key對(duì)應(yīng)形參名量愧,value對(duì)應(yīng)實(shí)參)
list1 = [89, 52, 33]
print(*list1)  # 89 52 33

def func8(x, y):
    print(x, y)


list2 = [1, 2]
func8(*list2)  # 1 2

dict1 = {'x': 1, 'y': 2}

func8(**dict1)  # 1 2
# 練習(xí):聲明一個(gè)函數(shù)钾菊,求多個(gè)數(shù)的差

def differ(*x):
    dif = 0
    for i in range(len(x)):
        if i == 0:
            dif = x[i]
        else:
            dif -= x[i]
    print(dif)

differ(1, 2)

1.什么是返回值

返回值就是return關(guān)鍵字后表達(dá)式的值(怎么確定返回值)
返回值就是函數(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ù),聲明過的變量累颂,運(yùn)算表達(dá)式)

2)生么事函數(shù)調(diào)用表達(dá)式:

函數(shù)調(diào)用語(yǔ)句就是函數(shù)調(diào)用表達(dá)式滞详,例如:func(10),max([1, 2])
每個(gè)調(diào)用函數(shù)的語(yǔ)句都有結(jié)果紊馏,這個(gè)結(jié)果解釋調(diào)用這個(gè)函數(shù)的返回值

2.使用返回值

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

3.什么時(shí)候需要返回值

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

多個(gè)返回值的寫法:
return 返回值1朱监,返回值2岸啡,...

def sum1(num1,num2):
    return num1 + num2


a = sum1(1, 2)
print(a)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市赫编,隨后出現(xiàn)的幾起案子巡蘸,更是在濱河造成了極大的恐慌,老刑警劉巖擂送,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赡若,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡团甲,警方通過查閱死者的電腦和手機(jī)逾冬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)躺苦,“玉大人身腻,你說(shuō)我怎么就攤上這事∑ダ澹” “怎么了嘀趟?”我有些...
    開封第一講書人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)愈诚。 經(jīng)常有香客問我她按,道長(zhǎng)牛隅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任酌泰,我火速辦了婚禮媒佣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘陵刹。我一直安慰自己默伍,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開白布衰琐。 她就那樣靜靜地躺著也糊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪羡宙。 梳的紋絲不亂的頭發(fā)上狸剃,一...
    開封第一講書人閱讀 51,763評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音狗热,去河邊找鬼捕捂。 笑死,一個(gè)胖子當(dāng)著我的面吹牛斗搞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播慷妙,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼僻焚,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了膝擂?” 一聲冷哼從身側(cè)響起虑啤,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎架馋,沒想到半個(gè)月后狞山,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡叉寂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年萍启,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屏鳍。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡勘纯,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出钓瞭,到底是詐尸還是另有隱情驳遵,我是刑警寧澤,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布山涡,位于F島的核電站堤结,受9級(jí)特大地震影響唆迁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜竞穷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一唐责、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧来庭,春花似錦妒蔚、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至帽衙,卻和暖如春菜皂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背厉萝。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工恍飘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谴垫。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓章母,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親翩剪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子乳怎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355