一、Python函數(shù)定義
Python定義函數(shù)使用def語(yǔ)句,定義格式如下:
def function_name(parameter):
' 函數(shù)說(shuō)明' #函數(shù)的第一行語(yǔ)句可以選擇性地使用文檔字符串-用于存放函數(shù)說(shuō)明
函數(shù)體
函數(shù)的返回值用return語(yǔ)句返回
注意:1、函數(shù)體內(nèi)部的語(yǔ)句在執(zhí)行時(shí),一旦執(zhí)行到return時(shí),函數(shù)就執(zhí)行完畢,并將結(jié)果返回
2、如果沒有return語(yǔ)句,函數(shù)執(zhí)行完畢后也會(huì)返回結(jié)果,只是結(jié)果為None
3、Python函數(shù)支持返回多個(gè)值,返回多個(gè)值時(shí)其實(shí)返回一個(gè)tuple
示例如下:
import math
def move(x,y,step,angle):
nx=x+step*math.cos(angle)
ny=x+step*math.sin(angle)
return nx,ny
x,y=move(100,100,60,math.pi/6)
print x,y
r=move(100,100,60,math.pi/6)
print r[0],r[1]
結(jié)果如下:
151.961524227 130.0
(151.96152422706632, 130.0)
二、Python函數(shù)定義默認(rèn)參數(shù)
Python函數(shù)定義時(shí),可默認(rèn)參數(shù),調(diào)用函數(shù)傳參數(shù)時(shí)傳必要的參數(shù),需要的時(shí)候再傳額外的參數(shù)覆蓋默認(rèn)參數(shù)值
由于函數(shù)從左往右順序匹配,所有默認(rèn)參數(shù)要定義在必需參數(shù)的后面
示例如下:
def greet(str='World'):
print 'Hello,'+str
greet()
greet('Bart')
結(jié)果如下:
Hello,World
Hello,Bart
三、Python函數(shù)定義可變參數(shù)
有時(shí)需要函數(shù)能接受任意個(gè)參數(shù),也就是不定長(zhǎng)參數(shù),可以定義一個(gè)可變參數(shù),定義可變參數(shù)后,Python解釋器會(huì)把傳入的一組參數(shù)組裝成一個(gè)tuple傳遞給可變參數(shù)
示例如下:
def average(*args):
if len(args)==0:
return 0
if len(args)>=0:
sum=0
for i in args:
sum+=i
return float(sum)/len(args)
print average()
print average(1,2)
print average(1,2,3,4)
結(jié)果如下:
0
1.5
2.5
四、Python函數(shù)定義關(guān)鍵字參數(shù)
Python使用關(guān)鍵字參數(shù)允許函數(shù)調(diào)用時(shí)參數(shù)的順序與聲明時(shí)不一致,Python解釋器能夠用參數(shù)名來(lái)匹配參數(shù)值
示例如下:
def printinfo(name,age):
print 'name:',name
print 'age:',age
printinfo(age=18,name='Mali')
結(jié)果如下:
name: Mali
age: 18
五、Python匿名函數(shù)
python使用lambda來(lái)創(chuàng)建匿名函數(shù)
lambda函數(shù)語(yǔ)法:
lambda [arg1[,arg2,arg3,...]]:表達(dá)式
注意:1、lambda只是一個(gè)表達(dá)式,函數(shù)體比def簡(jiǎn)單很多
2、lambda的主體只是一個(gè)表達(dá)式,而不是代碼塊,lambda能封裝的邏輯有限
3、lambda函數(shù)擁有自己的命名空間,不能訪問(wèn)自有參數(shù)列表之外或全局命名空間里的參數(shù)
示例如下:
sum=lambda x,y:x+y
print sum(1,2)
結(jié)果如下:
3
六、參數(shù)傳遞
Python函數(shù)的參數(shù)傳遞:
不可變類型:類似c++的值傳遞,如整數(shù)、字符串、元組
可變類型:類似c++的引用傳遞如列表、字典
聯(lián)系客服