Python基礎-函數初識
阿新 • • 發佈:2018-04-17
col NPU 問題 QQ brush orm {} urn with
一 函數的作用
1. 解決代碼復用的問題
2. 提高代碼的可維護性
3. 程序的組織結構更清晰,提高程序的可讀性
1.1 函數的定義與調用
# 定義函數: def my_len(): ‘‘‘計算s1的長度‘‘‘ s1 = ‘fdsgdfkjlgdfgrewioj‘ count = 0 for i in s1: count += 1 # print(count) my_len() # 函數名+() 執行函數 #函數的調用
定義: def 關鍵詞開頭,空格之後接函數名稱和圓括號(),最後還有一個‘:‘。 def 是固定的,不能變 它是定義函數的關鍵字 空格: 為了將def與函數名分開,必須空! 函數名: 函數名的定義與變量一致,只能包含字符串、下劃線和數字,且不能以數字開頭。要求函數名盡量簡短,並且能表達函數功能 括號: 必須添加 註釋:每一個函數都應該對功能和參數進行相應的說明,應該寫在定義函數的下一行,一增強代碼的可讀性。 調用: 就是 函數名() 要記得加上括號
1.2 函數的返回值 return
‘‘‘ 1,遇到return,結束函數。 def func1(): print(111) return print(222) func1() #只打印111 2,給函數的調用者(執行者)返回值。 無 return 返回None return 不寫 或者 None 返回None return 返回單個數. return 返回多個數,將多個數放在元組中返回。 ‘‘‘
s1 = ‘fdsgdfkjlgdfgrewioj‘ ##函數返回值是str類型 def my_len(): count = 0 for i in s1: count += 1 return 666 ##將666返回給函數執行結果 print(my_len(),type(my_len()) ## 返回多個值的時候,會將多個值放在元組中 def my_len(): count = 0 for i in s1: count += 1 return 666,222,count,‘老男孩‘ print(my_len(),type(my_len())) #在元組中分別賦值:def my_len(): count = 0 for i in s1: count += 1 return 666,222,count ret1,ret2,ret3 = my_len() # (666, 222, 19,) print(ret1) print(ret2) print(ret3)
1.3 函數的傳參
1.3.1 參數的定義
li = [1, 2, 3, 43, ‘fdsa‘, ‘alex‘] s1 = ‘fdsgdfkjlgdfgrewioj‘ def my_len(a): # 函數的定義 ()裏放的是形式參數,形參 count = 0 for i in a: count += 1 return count ret = my_len(li) # 函數的執行() 實際參數,實參 print(ret) print(len(s1)) # 從實參角度 #1,位置參數。 必須一一對應,按順序 def func1(x,y): print(x,y) func1(1, 2) #2,關鍵字參數。必須一一對應,不分順序。 def func1(x,y,z): print(x,y,z) func1(y=2,x=1,z=5,) # 參數練習 def max(a,b): if a > b: return a else: return b print(max(100,102)) #簡寫形式 def max(a,b):return a if a > b else b print(max(100,102)) 參數的定義參數的定義
1. 形參:在函數名後面的()中的參數,為形式參數,稱為形參
2. 實參:在調用函數時寫入()的參數,為實際參數,稱為實參。
3. 從實參角度,又分為:
1) 位置參數:按實際位置、順序一一對應的參數
2)關鍵字參數:a=b,必須一一對應,但不分順序
3)混合參數: 一一對應,切關鍵字參數必須在位置參數後面
# 混合參數。 關鍵字參數必須在位置參數後面 def func2(argv1,argv2,argv3): print(argv1) print(argv2) print(argv3) func2(1,2,argv3=4)
4.從形參角度:
1)位置參數,必須一一對應,按順序
2)默認參數,必須在位置參數後面
def register(name,sex=‘男‘): with open(‘register‘,encoding=‘utf-8‘,mode=‘a‘) as f1: f1.write(‘{} {}\n‘.format(name,sex)) while True: username = input(‘請輸入姓名:/q 或者 Q 退出‘) if username.upper() == ‘Q‘:break if ‘a‘ in username: sex = input(‘請輸入性別:‘) register(username,sex) else: register(username)
3)動態參數 *args *kwargs 萬能參數
# args 與 kwargs接收的內容 def func2(*args,**kwargs): print(args) # 元組(所有位置參數) print(kwargs) # 字典,所有關鍵字參數 func2(1,2,3,4,5,6,7,11,‘alex‘,‘老男孩‘,a=‘ww‘,b=‘qq‘,c=‘222‘) 混合參數中,arte與kwargs的位置 # 位置參數,*args, 默認參數 def func3(a,b,*args,sex=‘男‘): print(a) print(b) print(sex) print(args) func3(1,2,‘老男孩‘,‘alex‘,‘wusir‘,sex=‘女‘) # 位置參數,*args, 默認參數, **kwargs def func3(a,b,*args,sex=‘男‘,**kwargs): print(a) print(b) print(sex) print(args) print(kwargs) func3(1,2,‘老男孩‘,‘alex‘,‘wusir‘,name=‘alex‘,age=46)
args與kwargs的使用
def func1(*args,**kwargs): # 函數的定義 * 聚合。 print(args) print(kwargs) l1 = [1,2,3,4] l11 = (1,2,3,4) l2 = [‘alex‘,‘wusir‘,4] # func1(l1,l2,l11) 。 # func1(*l1,*l2,*l11) # 函數的執行:* 打散功能。 # func1(1,2,3,4,‘alex‘,‘wusir‘,4,1,2,3,4) dic1 = {‘name1‘:‘alex‘} dic2 = {‘name2‘:‘laonanhai‘} func1(**dic1,**dic2) # * 打散功能
Python基礎-函數初識