
1 1. 函數 2 函數是對功能的封裝 3 語法: 4 def 函數名(形參列表): 5 函數體(代碼塊, return) 6 調用: 7 函數名(實參列表) 8 2. 返回值 9 return : 在函數執行的時候. 如果遇到return. 直接返回 10 1.如果函數什么都不寫, 不寫return, 沒有返回值. 得到的是None 11 2.在函數中間或者末尾寫return, 返回的是None 12 3.在函數中寫return 值. 返回一個值. 13 4.在函數中可以返回多個返回值, return 值1, 值2, 值3...., 接收的是元組 14 3. 參數 15 函數執行的時候給函數傳遞信息. 16 *形參:函數聲明的位置的變量 17 *實參:函數調用的時候給的具體的值 18 傳參:把實參交給形參的過程 19 20 1. 實參: 21 1. 位置參數, 按照形參的參數位置, 給形參傳值 22 2. 關鍵字參數, 按照形參的名字給形參傳值 23 3. 混合參數. 即用位置參數, 也用關鍵參數 24 2. 形參: 25 1. 位置參數 26 2. 默認值參數 先位置后默認值 27 3. 動態參數(預習預習)
1. 函數
函數是對功能的封裝, 結構體如下:
聲明:
def 函數名 (形參)
函數體 (代碼塊 return)
調用:
函數名 (實參列表)
2. 返回值
return : 函數在執行過程中遇到 return 會直接返回,類似於循環中的 break
1) 如果函數什么都不寫,不寫return,沒有返回值,得到的是None
2) 中間或末尾寫return,沒有值,返回的是None, 中間出現類似break,不再執行后面的語句
3) 在函數中寫 return 值. 返回的是值
4)在函數中可以返回多個值,return 值1,值2,值3... 返回的形式是元組

1 #無返回值的 2 def yue(): 3 print('打開手機') 4 print('打開陌陌') 5 print('搜索心儀的對象') 6 print('出去玩吧') 7 print('出發') 8 yue() 9 print('掙錢!') 10 11 #有返回值的 12 def yue(): 13 print('打開手機') 14 print('打開陌陌') 15 print('搜索心儀的對象') 16 print('出去玩吧') 17 print('出發') 18 return(10086) 19 ret=yue() 20 print(ret) #10086 21 22 #有返回值的 23 def yue(): 24 print('打開手機') 25 print('打開陌陌') 26 return #可以終止函數的運行 None 27 print('搜索心儀的對象') #之后的語句不再運行 28 print('出去玩吧') 29 print('出發') 30 ret=yue() 31 print(ret) 32 33 # 小練習 34 def jisuan(): 35 content1=int(input('請輸入數字:')) 36 content2=int(input('請輸入數字:')) 37 return(content1+content2) 38 print(jisuan())
3. 參數
函數執行的時候給函數傳遞信息.
*形參: 函數聲明時位置的變量
*實參: 函數調用時給的具體的值
傳參: 把實參傳遞給形參的過程
1 def yu(tools): #形參 2 .... 3 yu('cars') #實參
實參形式:
1) 位置參數, 按照形參的參數位置,給形參傳值
2) 關鍵字參數, 按照形參的名字給形參傳值
3) 混合參數, 即有位置參數又有關鍵字參數, 且關鍵字參數在后
1 def chi(good_food,no_good_food,dreak,ice_cream): #形參位置參數 2 print(good_food,no_good_food,dreak,ice_cream) 3 4 chi('蝸牛','辣條','果汁','哈根達斯') #位置參數 5 chi(dreak='神仙水',ice_cream='老冰棍',good_food='蓋澆飯',no_good_food='鍋包肉') #關鍵字參數 6 chi('蓋澆飯','漢堡',ice_cream='巧樂茲',dreak='營養快線') #混合參數 必須(先位置后關鍵字)
形參形式:
1) 位置參數
2) 默認值參數, 先位置后默認值
3) 動態參數
1 def regist(name,phone,gender='男'): #形參默認值參數 默認值參數必須在參數列表的后面 2 print(name,phone,gender) 3 4 regist('阿凡達','10086') 5 regist('阿凡提','10010') 6 regist('阿凡','10011') #不賦值則為男 7 regist('女神','10088','女') #可以重新賦值為女
默認值參數中要注意:
1 def extendList(val,list=[]): #默認值 是可變的時候,多次調用,它的內存地址是一樣的 2 list.append(val) 3 return list 4 list1 = extendList(10) 5 list2 = extendList(123,[]) 6 list3 = extendList('a') 7 8 print('list1=%s'%list1) 9 print('list2=%s'%list2) 10 print('list3=%s'%list3)
結果為:[10,'a'] [123] [10,'a']
函數的動態參數: 1. *args 位置參數動態傳參 2. **kwargs 關鍵字參數動態傳參 形參動態傳參順序:
位置參數 >> *args >> 默認值 >> **kwargs
以上參數可以任意搭配使用
其中:默認值參數要改變默認值得話,需要用關鍵詞來改變 def func(*args, **kwargs): pass
形參的位置*,**: 聚合 實參的位置*,**: 打散
聲明時: 聚合
1) *args 位置參數的動態傳參 (可以同時接收多個位置參數,) 聲明時位於位置參數變量后.
1 def chi(*food): #參數名是food *表示動態傳參 2 print(food) 3 chi('蓋澆飯','火鍋','鍋包肉') #以元組的形式輸出 4 #('蓋澆飯', '火鍋', '鍋包肉') 5 6 def chi(name,*food): #參數名是food *表示動態傳參 7 print(name+'要吃',food) 8 chi('陳','蓋澆飯','火鍋','鍋包肉') 9 # 陳要吃 ('蓋澆飯', '火鍋', '鍋包肉') 10 11 #要將位置參數放在前面, 最好不要放后面(如下),需要用關鍵詞參數傳參 12 def chi(*food,name): #參數名是food *表示動態傳參 13 print(name+'要吃',food) 14 chi('蓋澆飯','火鍋','鍋包肉',name='陳') #返回的是元組 15 #陳要吃 ('蓋澆飯', '火鍋', '鍋包肉')
2) **kwargs 關鍵詞參數的動態傳參(可以同時接收多個關鍵詞參數), 聲明時位於默認值參數變量后.
1 def chi(**food): 2 print(food) 3 chi(good='狗不理',nogood='饅頭',drink='大白梨',) #返回的是字典 4 # 輸出:{'good': '狗不理', 'nogood': '饅頭', 'drink': '大白梨'}
1 # 可接收所有參數 2 def func(*args, **kwargs):# 無敵 *args相當於一個聚合的作用 3 print(args, kwargs) 4 func(1,2,3,4,5,a=6,b=7,c=9)
調用時: 打散
1) list, str, tuple, set 用 * 來打散 傳參后為tuple類型
1 def func(*food): # 形參:聚合, 位置參數 2 print(food) 3 lst = ["雞蛋","煎餅果子","豬蹄","滋滋冒油"] 4 func(*lst) # 打散. 把list, tuple, set, str 進行迭代打散
2) dict, 用 ** 來打散 傳參后為dict類型
1 def func(**kwargs): 2 print(kwargs) 3 dic = {"name":'alex', 'age':'18'} 4 func(**dic) # 打散成關鍵字參數
4. 函數的注釋
func.__doc__ 查看注釋
1 def func(a, b): 2 """ 3 這個函數是用來計算a和b的和 4 :param a: 第一個數據 5 :param b: 第二個數據 6 :return: 返回的是兩個數的和 7 """ 8 return a + b 9 10 print(func.__doc__) # 查看注釋文檔,ocument文檔