day9-總結 函數(shù)基礎
系統(tǒng)函數(shù)(內置函數(shù)) - 系統(tǒng)已經(jīng)聲明好的函數(shù)(類似已經(jīng)造好的機器)匾浪,程序員會用就行 例如:print\sum\max\min.....
自定義函數(shù) - 程序員自己定義的函數(shù)(自己造機器)
1)語法:
def 函數(shù)名(形參列表):
函數(shù)說明文檔
函數(shù)體
2)說明:
def - 聲明函數(shù)的關鍵字(固定寫法)
函數(shù)名 - 和變量名要求一樣
(): - 固定寫法
形參列表 - 以'變量名1大脉,變量名2梢灭,...' 的形式存在琼懊;每個變量就是形參磅叛。
形參的個數(shù)根據(jù)情況可以沒有也可以是多個
***形參的作用是將函數(shù)外面的數(shù)據(jù)傳遞到函數(shù)里面
函數(shù)說明文檔 - 用三個雙引號引起來的字符串嫌褪;作用是對函數(shù)的功能進行說明
函數(shù)體 - 和def保持一個縮進的一行或者多行語句枣耀。(實現(xiàn)函數(shù)的功能的多條語句)
3)初學者聲明函數(shù)的步驟:
a.確定函數(shù)的功能
b.根據(jù)函數(shù)功能確定函數(shù)名
c.確定函數(shù)的參數(shù):看實現(xiàn)函數(shù)的功能需不需要從外面?zhèn)髦翟谌牛枰獛讉€缕减?
d.實現(xiàn)函數(shù)功能
注意(重要E±取G研洹!BА):聲明函數(shù)的時候不會執(zhí)行函數(shù)體
-
4.函數(shù)調用(調用函數(shù)相當于使用機器),同一個函數(shù)可以調用多次
1)語法:
函數(shù)名(實參列表)
2)說明:
函數(shù)名 - 必須是已經(jīng)聲明過的函數(shù)名
() - 固定寫法
實參列表 - 以'值1皱卓,值2裹芝, 值3,...'形式存在娜汁;實參個數(shù)必須和形參個數(shù)一樣嫂易;
這兒的每個值就是實參,是用來給形參賦值的
函數(shù)調用
1)語法:
函數(shù)名(實參列表)
2)調用函數(shù)的作用:執(zhí)行函數(shù)體掐禁;獲取返回值
3)函數(shù)調用過程:
第一步:回到函數(shù)聲明的位置
第二步:傳參(用實參給形參賦值怜械,保證每個形參都有值)
第三步:執(zhí)行函數(shù)體
第四步:執(zhí)行完函數(shù)體就確定返回值
第五步:回到函數(shù)調用的位置繼續(xù)往后執(zhí)行
# 練習:聲明一個函數(shù),實現(xiàn)求1+2+3+4+....+N的和
def sum1(n):
t = 0
for x in range(1, n+1):
t += x
print(t)
sum1(11)
sum1(100)
# 聲明一個函數(shù)傅事,打印字符串中所有的字母字符
def print_alpha(str1):
new_str = ''
for char in str1:
if 'a' <= char <= 'z' or 'A' <= char <= 'Z':
new_str += char
print(new_str)
print_alpha('jnk123hhhb352..m') # jnkhhhbm
# 聲明一個函數(shù)缕允,在指定字符串中數(shù)字字符后面都添加一個指定的字符
def add_char(str1, char):
new_str = ''
for x in str1:
if '0' <= x <= '9':
new_str += x + char
else:
new_str += x
print(new_str)
add_char('hhbj2mk2v123...', '**') # hhbj2**mk2**v1**2**3**...
函數(shù)參數(shù)
根據(jù)調用函數(shù)的時候傳參的方式將參數(shù)分為位置參數(shù)和關鍵字參數(shù)
1)位置參數(shù):讓實參和形參在位置上一一對應(一般都用位置參數(shù))
2)關鍵字參數(shù):以'形參名=值'的形式傳參
注意:位置參數(shù)和關鍵字參數(shù)同時使用時候,位置參數(shù)必須在關鍵字參數(shù)的前面
3)什么時候使用關鍵字參數(shù):需要跳過前面某個或某幾個參數(shù)蹭越,直接給后面的參數(shù)賦值障本,必須使用關鍵字參數(shù)
聲明函數(shù)時候,形參可以設置默認值响鹃,設置完默認值后調用函數(shù)的時候有默認值的參數(shù)可以不用傳參驾霜。
一個函數(shù)可以給所有的參數(shù)設置默認值,也可以給部分參數(shù)設默認值买置;
必須保證沒有默認值的參數(shù)必須放在有默認值的參數(shù)的前面
1)給參數(shù)賦默認值粪糙,默認值的類型就是參數(shù)的類型
2)以'參數(shù)名:類型名'的形式聲明函數(shù)
1)在形參前加*,那么這個參數(shù)就可以接受多個實參;
帶*號的參數(shù)會作為一個元組忿项,對應多個實參是元組的元素(帶*號的不定長參數(shù)猜旬,必須使用位置參數(shù)傳參)
2)在形參前加**,參數(shù)也可以同時接受多個實參(帶**號的不定長參數(shù)倦卖,必須使用關鍵字參數(shù),關鍵字自己隨便命名)
將帶** 的參數(shù)作為字典椿争,將關鍵字參數(shù)的關鍵字作為key實參作為value存儲在字典中怕膛。
3) * 和 ** 一起使用時時為了保證不定長參數(shù)傳參時候既可以使用位置參數(shù)也可以使用關鍵字參數(shù)
# 補充:* 的用法:*列表/*元組 - 直接取出列表/元組中所有的元素
# **字典 - 直接取出字典中的所有元素
# 練習:聲明一個函數(shù),求多個數(shù)的差
# 例如:differ(10, 22) - -12 differ(1秦踪,2) - -1
def differ(*nums):
if len(nums) == 0:
print(0)
else:
t = nums[0]
for x in nums[1:]:
t -= x
print(t)
differ(1, 12, 3, 10) # -24
differ() # 0
函數(shù)返回值
返回值就是return關鍵字后表達式的值(怎么確定函數(shù)的返回值)
返回值就是函數(shù)調用表達式的值(怎么獲取函數(shù)的返回值)
(python中所有函數(shù)都用返回值褐捻,默認為None)
1)return:
return是函數(shù)體中的關鍵字(只能在函數(shù)中使用)掸茅,作用有兩個:結束函數(shù)\確定函數(shù)返回值
a.結束函數(shù):執(zhí)行函數(shù)體的時候只要遇到return函數(shù)直接結束
b.確定函數(shù)的返回值:return 返回值(可以是具體數(shù)據(jù),聲明的變量柠逞,運算表達式)
2)什么是函數(shù)調用表達式
函數(shù)調用語句就是函數(shù)調用表達式:例如:max()昧狮,min()...
每個調用函數(shù)的語句都有結果,這個結果就是調用這個函數(shù)得到的返回值
想要用函數(shù)的返回值板壮,就使用函數(shù)調用表達式的值逗鸣。
普通數(shù)據(jù)能做的是,函數(shù)調用表達式都能做
初學者:看實現(xiàn)函數(shù)的功能會不會產(chǎn)生新的數(shù)據(jù)
return 返回值1绰精,返回值2撒璧,...