一、函數(shù)封裝的注意點(diǎn)
1.函數(shù)封裝污呼,要明確函數(shù)的功能
2.函數(shù)封裝一般都是帶參數(shù)的
3.函數(shù)盡量要有return值
二、形式參數(shù)和實(shí)際參數(shù)
def run(a,b):
? ? retrun a+b
print(run(3,4))
定義:
形式參數(shù):a,b為形式參數(shù)包竹,在函數(shù)定義的時(shí)候的參數(shù)
實(shí)際參數(shù):3曙求,4為實(shí)際參數(shù),函數(shù)調(diào)用的時(shí)候的實(shí)際值
三映企、實(shí)際參數(shù)的傳參方式
1. 位置參數(shù)
?run(3,4)
位置參數(shù)静浴,位置要一一對(duì)應(yīng)堰氓,記住自己在什么位置。
2. 關(guān)鍵字參數(shù)
可以給參數(shù)打一個(gè)標(biāo)簽苹享,可以改變參數(shù)的位置
run(a=3,b=4) 双絮,也可以寫成run(b=4,a=3)
注意點(diǎn):(1)關(guān)鍵字參數(shù)要放在位置參數(shù)的后面。
? ? ? ? ? ? ? ?(2)位置參數(shù)還是需要遵循位置參數(shù)的規(guī)則
def cut(a, b ,c):
? ? return a - b * c
print(cut(1,a=2,b=1))? ? ?#錯(cuò)誤
print(cut(a=1,b=2,3))? ? #錯(cuò)誤
print(cut(1,c=2,b=1))? ? #正確
3.默認(rèn)參數(shù)
函數(shù)在定義的時(shí)候指定默認(rèn)值,當(dāng)沒有傳參數(shù)時(shí)得问,就使用默認(rèn)值囤攀,如果傳參數(shù)就使用實(shí)際傳的參數(shù)
def cut(a, b=3 ,c=1):? ? #此處b和c的就是默認(rèn)參數(shù)
? ? return a - b * c
print(cut(1))
print(cut(1,2))
print(cut(1,2,3))
坑1:默認(rèn)參數(shù)要放到位置參數(shù)的后面。
def cut(a, b=3 ,c):? ? #此時(shí)會(huì)報(bào)錯(cuò)SyntaxError: non-default argument follows default argument
? ? return a - b * c
4.不定長參數(shù)? *args
def test(*args):
? ? print(args)
return None
test("a","b","c")
5.關(guān)鍵字參數(shù)的不定長參數(shù)? **kwargs
def test(a, b, *args, **kwargs):
? ? print(args)
? ? print(kwargs)
????return None
test("a","b","c","d", note="123", way="post")
返回:('c', 'd')? ?#args
? ? ? ? ? ?{'note': '123', 'way': 'post'}? ? #kwargs
四. 全局變量
全局變量可以在函數(shù)內(nèi)和函數(shù)外面都能接收到宫纬。局部變量只能在函數(shù)體內(nèi)使用
全局變量存儲(chǔ)在 globals()中焚挠,局部變量存儲(chǔ)在locals()中
五.函數(shù)作用域的修改
global a #聲明a為全局變量
如果聲明了全局變量,就不要用作參數(shù)漓骚。這樣會(huì)沖突