1.函數(shù)返回值
return 后面可以接多個(gè)值
return 'abc',[42,'python'],'guido'等價(jià)于return ('abc',[42,'python'],'guido')
存儲元組的方式:
def bar():
return 'abc',[42,'python'],'guido'
1)aTuple=bar()
2)x,y,z=bar()
3)(a,b,c)=bar()
如果函數(shù)沒有返回值或者如果顯示返回None哨免,函數(shù)會返回None
2.內(nèi)部函數(shù)
將一個(gè)函數(shù)定義在另一個(gè)函數(shù)內(nèi)部考杉,這個(gè)內(nèi)部函數(shù)的作用域只能在外部函數(shù)之內(nèi),其他地方都不能調(diào)用它。
3.裝飾器
裝飾器的作用:
1)引入日志
2)增加計(jì)時(shí)邏輯來檢測性能
3)給函數(shù)加入事務(wù)的能力
@decorator(dec_opt_args)
def func2Bdecorated(func_opt_args):
裝飾器的返回值是一個(gè)被包裝的函數(shù) return wrapped這個(gè)是必須的桑逝,foo=testFunc(foo)
4.傳遞函數(shù)
將一個(gè)函數(shù)對象的引用賦給一個(gè)新的變量也就是變量也指向這個(gè)函數(shù)的引用
傳遞函數(shù)并調(diào)用函數(shù)
5.函數(shù)的參數(shù)
def func(posargs,defarg1=dval1,defarg2=dval2,....):
posargs是位置參數(shù)萝快,必須按照先后順序傳參茬缩,defarg1=dval1是默認(rèn)參數(shù)择卦,可傳參也可不傳
但posargs必須在所有默認(rèn)參數(shù)之前
非關(guān)鍵字可變長參數(shù)(元組)
在傳遞參數(shù)的時(shí)候可以不用參數(shù)名=值的方式進(jìn)行傳遞參數(shù),形參直接傳遞參數(shù)值
運(yùn)行結(jié)果:
關(guān)鍵字變量參數(shù)(字典)
**the Rest也是可變參數(shù)醉鳖,且傳值的時(shí)候要使用參數(shù)名=參數(shù)值的形式傳遞
6.lambda匿名函數(shù)
def true():
? ? return True
等效于:lambda:True
lambda也是函數(shù)捡硅,可以賦給變量,true=lambda:True盗棵,然后通過
------------------------------------------------------------------------------------------
def add(x,y):return x+y
等效于a=lambda x壮韭,y:x+y
調(diào)用print a(3,4)
7.內(nèi)建函數(shù)?
查看內(nèi)建函數(shù)的方式 ?dir(__builtins__)
filter()
filter(func,seq):將序列中的每一個(gè)值傳遞給func,然后返回結(jié)果為true的值的列表
func可以使用lambda代替
map()
map(func,seq):將序列上的每一個(gè)元素傳遞給func纹因,返回返回值的列表
map(lambda x:x+2,[0,1,2,3,4])
map(None,[1,3,5],[2,4,6])使用None的函數(shù)對象可以將兩個(gè)列表兩兩組合再返回列表喷屋,同zip函數(shù)
reduce()
reduce((lambda x,y:x+y),range(5))-------(((0+1)+2)+3)+4 將參數(shù)傳入lambda表達(dá)式,然后拿結(jié)果跟另一個(gè)參數(shù)傳入表達(dá)式
8.全局變量和局部變量
在函數(shù)中首先去找局部變量瞭恰,在局部變量中找不到同名變量后屯曹,回去全局變量中找
而在代碼塊中想修改全局變量的值就要將全局變量聲明為global