一、函數(shù)的基礎知識
1.定義
- 函數(shù)就是對實現(xiàn)某一功能的代碼段的封裝
2.分類
自定義函數(shù)(程序員自己聲明實現(xiàn)其功能)
內置函數(shù)(系統(tǒng)已經(jīng)聲明實現(xiàn)完成)
二、函數(shù)的聲明
1.語法
- 字面量:
def 函數(shù)名(參數(shù)列表):
函數(shù)體
- 說明:
a.def-->python中聲明函數(shù)的關鍵字
b.函數(shù)名-->標識符,不能是關鍵字。遵守PEP8命名規(guī)范(所有字母小寫,多個單詞下劃線隔開,見名知意)
c.()-->固定格式
d.參數(shù)列表-->形參列表:參數(shù)名1,參數(shù)名2...
可以有多個參數(shù),也可以沒有
參數(shù)是用來從函數(shù)的外部給函數(shù)里面?zhèn)髦档?/p>e.:-->固定格式
f.函數(shù)體:-->就是實現(xiàn)函數(shù)功能的代碼段
- 附:
參數(shù)列表中,可以通過'參數(shù)名:類型名'來指定參數(shù)的類型,也可以通過設置默認值來說明參數(shù)的類型
說明類型的好處:a.傳什么類型的值一目了然 b.實現(xiàn)函數(shù)體的時候,可以有相關提示
2.聲明步驟
-
步驟:
a.確定函數(shù)的功能
b.根據(jù)功能確定函數(shù)名
c.確定參數(shù):確定有沒有,確定有幾個(看實現(xiàn)函數(shù)的功能需不需要從函數(shù)外面?zhèn)髦?,需要傳幾個)
d.實現(xiàn)函數(shù)功能
e.確定返回值
例子:
def my_sum(num1,num2):
print(num1 + num2)
def print_star(n):
print('*'*n)
def my_sum1(n):
sum1 = 0
for i in range(n+1):
sum1 += i
print(sum1)
三、函數(shù)的調用
1.語法
- 字面量:
函數(shù)名(實參列表)
- 說明:
a.函數(shù)名-->必須是已經(jīng)聲明過的函數(shù)
b.()-->固定格式
c.實參列表-->數(shù)據(jù)1,數(shù)據(jù)2...
用來給形參賦值
- 例子:
# 寫一個函數(shù),打印兩個數(shù)的和
def yt_sum(num1, num2):
print(num1 + num2)
yt_sum(10, 20)
yt_sum(100, 200)
#30
#300
# 寫一個函數(shù),打印5個'*'
def print_star():
print('*'*5)
print_star()
#*****
#**********
#********************
2.調用過程
- 過程:
第一步:回到函數(shù)聲明的位置
第二步:用實參給形參賦值(傳參: 一定要保證每個參數(shù)都有值)
第三步:執(zhí)行函數(shù)體
第四步:返回返回值
第五步:執(zhí)行完函數(shù)體回到函數(shù)調用的位置,接著之后后面的代碼
- 例子:
def sum2(num1, num2):
# num1 = 10, num2 = 20
print(num1 + num2)
sum2(10, 20)
print('=====')
#30
#====
三、函數(shù)的參數(shù)
1.位置參數(shù)
定義:
按照實參的順序一一給形參賦值例子:
def func1(a, b, c):
print('a:', a, 'b:', b, 'c:', c)
func1(10, 20, 30)
#a: 10 b: 20 c: 30
2.關鍵字參數(shù)
定義:
形參1=值1, 形參2=值2...例子:
def func1(a, b, c):
print('a:', a, 'b:', b, 'c:', c)
func1(c=300, a=200, b=100)
#a: 200 b: 100 c: 300
3.默認參數(shù)
- 定義:
函數(shù)聲明的時候可以給參數(shù)設置默認值,但是,有默認值的參數(shù),必須放在參數(shù)列表的最后
有默認值的參數(shù),在調用的時候可以不用傳參
*例子:
def func2(a, c, b=0):
print('a:', a, 'b:', b, 'c:', c)
# a=10 c=20
func2(10, 20)
# a=100 c=200 b=300
func2(100, 200, 300)
def func3(a=10, c=30, b=20):
print('a:', a, 'b:', b, 'c:', c)
func3(a=100, b=200)
func3(100, b=200)
#a: 100 b: 200 c: 30
#a: 100 b: 200 c: 30
4.不定長參數(shù)
類型:
*參數(shù)名: 將位置參數(shù)作為元祖的元素。參數(shù)就是一個元祖
**參數(shù)名: 將關鍵字參數(shù),一參數(shù)名為key,實參為值組合成鍵值對,作為字典的元素。參數(shù)是一個字典注意:經(jīng)常將args和kwargs組合在一起使用,但是使用的時候要放在**的前面!
例子:
def func4(*args):
print(args)
func4(23, 89, 90)
def func5(**kwargs):
print(kwargs)
func5(a=12, b=89, c=100, d=34)
def func6(*args, **kwargs):
print(args, kwargs)
func6(12, 90)
func6(a=10, b=20, c=30)
func6(12, 34, a=10, b=20)
func6(12, a=23, b=30)
(23, 89, 90)
#{'a': 12, 'b': 89, 'c': 100, 'd': 34}
#(12, 90) {}
#() {'a': 10, 'b': 20, 'c': 30}
#(12, 34) {'a': 10, 'b': 20}
#(12,) {'a': 23, 'b': 30}
四、函數(shù)的返回值
1.定義
定義:
函數(shù)的返回值就是函數(shù)調用表達式的值,就是return關鍵字后面的表達式的值。python中所有的函數(shù)都有返回值,返回值默認是None說明:
函數(shù)調用表達式 --> 調用函數(shù)的語句(函數(shù)名(實參))
return --> 關鍵字,只能寫在函數(shù)體中。用來返回返回值和結束函數(shù)注意:看一個函數(shù)的返回值,只看有沒有遇到return。只要沒有遇到就是None,遇到return就是return后面的值
2.函數(shù)調用過程
第一步:回到函數(shù)聲明的位置
第二步:用實參給形參賦值(傳參: 一定要保證每個參數(shù)都有值)
第三步:執(zhí)行函數(shù)體
第四步:返回返回值 --> 返回給函數(shù)調用表達式
第五步:執(zhí)行完函數(shù)體回到函數(shù)調用的位置,接著之后后面的代碼
3.有無return
- 有return:
def func1():
print('hello python!')
print('abcc')
for x in range(10):
print(x)
# 將返回值賦給一個變量
re = func1()
print(re)
# 直接打印返回值
print(func1())
# 將返回值作為列表的元素
list1 = [func1(), 1]
print(list1)
- 沒有return:
def func2():
print('=====')
print('!!!!!')
return 100
print('*****')
re = func2()
print(re)
- 注意:如果實現(xiàn)函數(shù)的功能會產(chǎn)生新的數(shù)據(jù),就將新的數(shù)據(jù)返回。如果不會產(chǎn)生新的數(shù)據(jù)就不用返回值
作業(yè)