函數的定義python
python定義函數使用def關鍵字函數
return[表達式]語句用於退出函數,選擇性的向調用方返回一個表達式,不帶參數值的return語句返回nonespa
def 函數名(參數列表): 函數體
def get_money_fromATM(cardno,password,money): #密碼要求是6位字符串類型 if type(password) is str and len(password)==6: print('密碼正確') else: print('密碼格式錯誤') #金額小於3000元的能被100整除的整數 if type(money) is int : if money%100==0 and money<=3000: print('金額正確') else: print('金額格式錯誤,請從新輸入') get_money_fromATM(12412412412,'123456',2300) #運行結果 密碼正確 金額正確
#計算面積的函數 def z(x,y): i=x*y print(i) z(2,7) #運行結果: 14
def sum(x,y): z=x+y print('函數內',z) #調用的函數中沒有return表達式 z=sum(5,9) print('函數外',z) #運行結果 函數內 14 函數外 None
def sum(x,y): z=x+y print('函數內',z) return z #調用的函數中沒有return表達式 z=sum(5,9) print('函數外',z) #運行結果 函數內 14 函數外 14
可變參數3d
def sum(*lst): 參數前面加一個星號,表示這個參數是可變的,也就是說能夠接受多個參數,將這些參數構成一個元組,只能經過爲止參數傳參code
可變參數有兩種形式:對象
當默認參數和可變參數一塊兒出現的時候,默認參數至關於普通參數blog
一般來講:字符串
keyword-only: 必須以Key->Value對的形式出現的,叫作keyword-onlyget
參數的傳遞class
傳遞不可變對象實例
def jiaohuan(m,n): temp=m m=n n=temp return a=2 b=3 print(a,b) jiaohuan(a,b) print(a,b) #運行結果 2 3 2 3
調用函數時可以使用的正式參數類型:必需參數、關鍵字參數、默認參數、不定長參數
必需參數
必需參數須以正確的順序傳入函數。調用時的數量不須和聲明時的同樣
調用printme函數,必須傳入一個參數,否則會出現語法錯誤
def printme(str): "打印任何傳入的字符串" print(str) printme("調用printme函數") #運行結果 調用printme函數
關鍵字參數
關鍵字參數和函數調用關係緊密,函數調用使用關鍵字參數來肯定傳入的參數值
使用關鍵字參數容許函數調用時參數的順序與聲明時不一致,由於python解釋器可以用參數名匹配參數值
def printme(str): "打印任何傳入的字符串" print(str) printme(str="調用printme函數") #運行結果 調用printme函數
參數的默認值
def inc(base,x=1): 給第二個參數設置一個默認值,如果不傳遞參數,則使用默認的參數值,如果傳遞參數,則使用傳遞的參數值
默認參數
調用函數時,若是沒有傳遞參數,則會使用默認參數,默認參數只能放在參數列表的最後一個,但能夠有多個默認參數
def sum(name,age=50): print(name,age) name='白雲' age=45 sum(name,age) #運行結果 白雲 45
不定長參數
你可能須要一個函數能處理比當初聲明時更多的參數,這些參數叫作不定長參數,聲明時不會命名
加了星號的變量名會存放全部未命名的變量參數。若是在函數調用時沒有指定參數,它就是一個空元組,咱們也能夠不向函數傳遞未命名的變量
def printinfo(str,*varchar): '打印任何輸入的字符串' print('輸出:') print(str) for var in varchar: print(var) #調用函數printinfo printinfo(10) printinfo(70,60,50,40,30) #運行結果 輸出: 10 輸出: 70 60 50 40 30
匿名函數
python使用laabda來建立匿名函數
所謂匿名,即再也不使用def語句這樣標準的形式定義一個函數
sum=lambda x,y:x+y print(sum(1,2)) #運行結果 3