一、函數基本定義
定義函數的目的是為了讓一段代碼可以被重復使用
函數定義的語法:
def 函數名([參數,參數.....]): 函數主體代碼(多行代碼) [return [返回值]]
注:函數中的函數體都通過縮進來定義
實例一:定義一個無參有返回值的函數
# coding=UTF-8 def get_info(): #獲取信息的函數 return "我的第一個函數" print(get_info()) #調用函數,直接返回內容輸出
程序執行結果:
二、函數的參數傳遞
實例一:
# coding=UTF-8 def echo(title,url): return "網站名稱:%s,主頁地址:%s"%(title,url) print(echo("百度","www.baidu.com")) print(echo(url="www.baidu.com",title="百度"))
實例二:定義參數的默認值
# coding=UTF-8 def echo(title,url="www.taobao.com"): return "網站名稱:{},主頁地址:{}".format(title,url) #打印輸出指定標題及網址 print(echo("百度","www.baidu.com")) #打印輸出不指定網址 print(echo("淘寶"))
執行結果:
注:如果在參數上定義了默認值,那么該參數一定要放在參數列表的最后
實例二:使用函數修改列表
# coding=UTF-8 def change_data(list): list.append("one") #修改列表內容 #定義infos列表 infos = ["tow"] change_data(infos) #函數擴充列表內容 print(infos) #輸出infos列表
執行結果:
三、可變參數
按照之前的參數形式,只要函數定義了幾個參數,在函數調用的時候就必須明確的傳遞幾個參數,在Python中為了靈活的使用參數提供有可變參數的形式。
可變參數都使用元組來進行接收。
實例一:使用元組(使用“*”標記來聲明)的可變參數實現累加及累減的操作
# coding=UTF-8 def math(cmd,*numbers): # *代表numbers定義的是一個元組 print("可變參數numbers的類型:%s,參數的數量:%d" %(type(numbers),len(numbers))) sum = 0 #保存計算結果 if cmd == "+": for num in numbers: sum += num elif cmd == "-": for num in numbers: sum -= num return sum print("數字的累加結果:%d" %math("+",1,2,3,4,5,6,7,8,9)) print("數字的累減結果:%d" %math("-",1,2,3,4,5,6,7,8,9))
執行結果:
實例二:使用字典(可以使用“**”標記來聲明)來實現關鍵字參數的傳遞
# coding=UTF-8 def print_info(name,**urls): """ 定義輸出函數 param name:用戶姓名 param urls:一組key=value的組合 網站名=網址 """ print("用戶姓名:%s" %name) print("喜歡的網站:") for key,value in urls.items(): print("\t|-%s:%s" %(key,value)) print_info("風之老凌",baidu="www.baidu.com",taobao="www.taobao.com")
執行結果:
四、定義混合參數
函數中參數的類型可以有很多種:必選參數、默認參數、可變參數、命名關鍵字參數和關鍵字參數,這些參數在定義是也要考慮到其各自的語法參數問題。
實例一:
# coding=UTF-8 def print_info(name,age,*inst,**urls): print("用戶姓名:%s,年齡:%s" %(name,age)) print("用戶的興趣:",end="") for item in inst: print(item,end="、") print("\n喜歡的網站:") for key,value in urls.items(): print("\t|-%s:%s" %(key,value)) print_info("風之老凌",20,"看書","寫作",baidu="www.baidu.com",taobao="www.taobao.com")
執行結果:
五、函數的遞歸調用 (如非必要情況不建議使用遞歸)
遞歸調用的處理條件
需要明確的定義一個遞歸調用的結束條件
每一次調用的時候都需要修改相應的參數的內容
實例一:使用遞歸計算1-99的和
# coding=UTF-8 def sum(num): if num == 1: return 1 return num + sum(num -1) print("1-99的和:%d" %sum(100))
執行結果: