七、函数
一、函數(shù)的基本使用
1. 什么是函數(shù)在程序具備某一功能的工具=》函數(shù)
事先準(zhǔn)備好工具=》函數(shù)的定義
遇到應(yīng)用場(chǎng)景、拿來(lái)就用=》函數(shù)的調(diào)用
分為兩大類:
1. 內(nèi)置函數(shù)
2. 自定義函數(shù)
2. 為何要用函數(shù)
1. 代碼冗余
2. 程序的組織結(jié)構(gòu)不清晰,可讀性差
3. 擴(kuò)展性差
3. 如何用函數(shù)
函數(shù)的使用必須遵循一個(gè)原則:
1. 先定義
定義語(yǔ)法:
def 函數(shù)名(參1,參2,參3,...):
"""
文檔注釋
"""
代碼1
代碼2
代碼3
...
return 值
2. 后調(diào)用
函數(shù)名()
一. 定義階段: 只檢測(cè)語(yǔ)法,不執(zhí)行代碼
def func():
print('from func 1')
print('from func 2')
print('from func 3')
print('from func 4')
二. 調(diào)用階段: 開(kāi)始執(zhí)行函數(shù)體代碼
func()
func()
func()
示范一:
def foo():
print('from foo')
bar()
foo()
示范二:
def bar():
print('from bar')
def foo():
print('from foo')
bar()
foo()
示范三:
定義
def foo():
print('from foo')
bar()
def bar():
print('from bar')
調(diào)用
foo()
三:定義函數(shù)的三種形式
1. 無(wú)參函數(shù)
def func():
print('from func')
func()
2. 有參函數(shù)
def max2(x,y):
# x=1
# y=2
if x > y:
print(x)
else:
print(y)
max2(1,2)
max2(3,4)
3. 空函數(shù)
def register():
pass
四:調(diào)用函數(shù)的三種形式
1 語(yǔ)句形式
def func():
print('from func')
func()
2 表達(dá)式形式
def max2(x,y):
if x > y:
return x
else:
return y
res=max2(1000,2000) * 12
print(res)
res=len('hello')
print(res)
3 函數(shù)的調(diào)用可以當(dāng)作另外一個(gè)函數(shù)的參數(shù)傳入
def max2(x,y):
if x > y:
return x
else:
return y
res=max2(max2(1,2),3)
print(res)
二、函數(shù)的返回值
1. 什么是函數(shù)的返回值返回值是函數(shù)體代碼的運(yùn)行成果
2. 為何要有返回值
需要拿到函數(shù)的處理結(jié)果做進(jìn)一步的處理,則函數(shù)必須有返回值
3. 如何用
return 返回值的特點(diǎn):
1. 返回的值沒(méi)有類型限制,也沒(méi)有個(gè)數(shù)限制
I: return或者函數(shù)沒(méi)return:返回值None
II: return 值:返回的就是該值本身
III: return 值1,值2,值3:返回元組(值1,值2,值3)
2. return是函數(shù)結(jié)束運(yùn)行的標(biāo)志,函數(shù)內(nèi)可以有多個(gè)return,但只要執(zhí)行一次函數(shù)就立即結(jié)束,并且將return后的值當(dāng)作本次調(diào)用的結(jié)果返回
一 函數(shù)的參數(shù)分為兩大類:
1. 形參:在定義函數(shù)時(shí)括號(hào)內(nèi)指定的參數(shù)(變量名),稱之為形參
2. 實(shí)參:在調(diào)用函數(shù)時(shí)括號(hào)內(nèi)傳入的值(變量值),稱之為實(shí)參
二者的關(guān)系:在調(diào)用函數(shù)時(shí),實(shí)參值(變量值)會(huì)傳給形參(變量名),這種綁定關(guān)系在調(diào)用函數(shù)時(shí)生效,調(diào)用結(jié)束后解除綁定
def func(x,y):
x=1
y=2
print(x,y)#
func(1,2)
print(x)
a=1
b=2
func(a,b)
二:函數(shù)參數(shù)詳解
1. 形參:
1.1 位置形參:在定義階段,按照從左到右的順序依次定義的形參
特點(diǎn):必須被傳值
def func(x,y,z):
print(x,y,z)
func(1,2,3)
func(1,2,3,4)
func(1,2,)
1.2 默認(rèn)參數(shù):在定義階段,就已經(jīng)為某個(gè)形參賦值,該形參稱之為默認(rèn)形參
特點(diǎn):在定義階段就已經(jīng)有值,意味著調(diào)用階段可以不用為其傳值
注意點(diǎn):位置形參必須放在默認(rèn)形參的前面
def func(x,y=2):
print(x,y)
func(1)
func(1,3333333)
def register(name,age,sex='male'):
print(name,age,sex)
register('靚仔',18,)
register('小紅',28,)
register('小黑',38,)
register('花姑娘',16,'female')
def func(y=2,x):
print(x,y)
1.3 形參中*與**的用法
1. 形參中帶*:*會(huì)將溢出的位置實(shí)參存成元組的形式然后賦值其后變量名
def func(x,y,*args):
print(x,y,args)
func(1,2,3,4,5,6)
2. 形參中帶**:**會(huì)溢出的關(guān)鍵字實(shí)參存成字典的格式然后賦值其后變量名
def func(x,y,**kwargs):
print(x,y,kwargs)
func(1,y=2,z=3,m=1,n=2)
2. 實(shí)參
2.1 位置實(shí)參: 在調(diào)用階段,按照從左到右的順序依次傳入的值
特點(diǎn):這種傳值方式會(huì)與形參一一對(duì)應(yīng)
func(2,1,3)
2.2 關(guān)鍵字實(shí)參: 在調(diào)用階段,按照key=value的格式傳值
特點(diǎn):可以完全打亂位置,但仍然能為指定的形參傳值
func(z=3,y=2,x=1)
注意:可以混用關(guān)鍵字實(shí)參與位置實(shí)參,但是
1. 同一個(gè)形參只能被賦值一次
2. 位置實(shí)參必須跟在關(guān)鍵字實(shí)參的前面
func(1,z=3,y=2)
func(1,z=3,y=2,x=333)
func(x=1,2,z=3) # 報(bào)語(yǔ)法錯(cuò)誤
2.3 實(shí)參中*與**的用法
1. 實(shí)參中帶*:先將實(shí)參打散成位置實(shí)參,然后再與形參做對(duì)應(yīng)
def func(x,y,z):
print(x,y,z)
func(1,[2,3])
func(*[1,2,3]) #func(1,2,3)
func(*'hello') #func('h','e','l','l','o')
func(*'hel') #func('h','e','l')
2. 實(shí)參中帶**:先將實(shí)參打散成關(guān)鍵字實(shí)參,然后再與形參做對(duì)應(yīng)
def func(x,y,z):
print(x,y,z)
func(**{'x':1,'z':3,'y':2}) #func(z=3,y=2,x=1)
例: def index(x,y,z):
print(x,y,z)
def wrapper(*args,**kwargs): # args=(1,2,3,4,5) kwargs={'c':3,'b':2,'a':1}
index(*args,**kwargs) #index(*(1,2,3,4,5),**{'c':3,'b':2,'a':1}) #index(1,2,3,4,5,a=1,b=2,c=3)
#index(1,z=3,y=2)
# wrapper(1,2,3,4,5,a=1,b=2,c=3)
wrapper(1,z=3,y=2)
轉(zhuǎn)載于:https://www.cnblogs.com/lanlan999/p/10029179.html
總結(jié)
- 上一篇: koa 学习1
- 下一篇: javescript的内置对象