參數(shù)
1可變,不可變
2必選
3默認(rèn)
4可變
5關(guān)鍵字
在函數(shù)之前,定義的所有的變量都是全局變量。一旦定義了,后面所有的地方一直訪問(wèn)使用。
在函數(shù)里定義的變量,都是局部變量,一旦函數(shù)運(yùn)行完畢,局部變量就會(huì)被垃圾回收機(jī)制回收。
局部變量:1、參數(shù)
?????????????????? 2、在函數(shù)里直接定義的變量
可變參數(shù)
* :元組
在Python函數(shù)中,還可以定義可變參數(shù)。顧名思義,可變參數(shù)就是傳入的參數(shù)個(gè)數(shù)是可變的,可以是1個(gè)、2個(gè)到任意個(gè),還可以是0個(gè)。參數(shù)組裝成一個(gè)tutple
def calc(*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
**? :字典
變參數(shù)允許你傳入0個(gè)或任意個(gè)參數(shù),這些可變參數(shù)在函數(shù)調(diào)用時(shí)自動(dòng)組裝為一個(gè)tuple。而關(guān)鍵字參數(shù)允許你傳入0個(gè)或任意個(gè)含參數(shù)名的參數(shù),這些關(guān)鍵字參數(shù)在函數(shù)內(nèi)部自動(dòng)組裝為一個(gè)dict。
def person(name, age, **kw):
print('name:', name, 'age:', age, 'other:', kw)
參數(shù)組合排序:def f(a,b=1,*c,**d)
函數(shù)內(nèi)部修改全局變量,報(bào)錯(cuò)。函數(shù)內(nèi)部不能修改全局變量。
需要修改的話,需要函數(shù)的第一行加global就可以獲取/設(shè)置全局變量
pass占位符
作用域
小結(jié)
遞歸
遞歸是自己調(diào)用自己的話,迭代就是A不停的調(diào)用B.
遞歸中一定有迭代,但是迭代中不一定有遞歸,大部分可以相互轉(zhuǎn)換.能用迭代的不用遞歸,遞歸調(diào)用函數(shù),浪費(fèi)空間,并且遞歸太深容易造成堆棧的溢出.使用的時(shí)候要慎重。
python語(yǔ)言缺陷:遞歸在python語(yǔ)言里面運(yùn)行很慢
匿名函數(shù) lambda