函數的結構: 函數的返回值: 1.當函數執行時運到return關鍵字將不再往下執行 2.當函數不寫return或者return後面不寫值時它的返回值為None 3.當函數return後面寫了一個值怎返回該值 4.當函數後面寫了多個結果則返回一個元祖,可以通過直接使用元祖來獲得多個變數 為什麼返回的是 ...
函數的結構:
函數的返回值:
1.當函數執行時運到return關鍵字將不再往下執行
def func(): print("hello world!") print("hello world!") return print("hello world!") func() #hello world! #hello world!
2.當函數不寫return或者return後面不寫值時它的返回值為None
def func(): print("hello world!") print(func()) # hello world! # None
3.當函數return後面寫了一個值就返回該值
4.當函數後面寫了多個結果則返回一個元祖,可以通過直接使用元祖來獲得多個變數
def func(): return 1,5,6,7 values = func() print(values) #(1, 5, 6, 7)
為什麼返回的是一個元祖數據?
當打開python解釋器
python自動將逗號分隔的元素組合成一個元祖,元祖、列表、字典可以進行解包
函數的參數:
傳參:就是將實際參數傳遞給形式參數的過程
<1>形式參數:在函數體使用的參數變數
a.位置參數:按照位置從左到右一一對應
b.預設值參數:給函數參數設定一個預設值,例如當我們調用open函數時我們預設的模式就是mode = 'r',我們就可以省去不寫
def print_info(name,age,sex = 'male'): print("{} {} {}".format(name, age,sex)) print_info('Jane',age = 15) #Jane male 15
預設值也可以在實際參數去修改:
def print_info(name,age,sex = 'male'): print("{} {} {}".format(name, age,sex)) print_info('Jane',sex = 'female',age = 15) #Jane female 15
陷阱:如果預設參數的值是一個可變數據類型,那麼每一次調用函數的時候,如果不傳值那麼就公用這個數據類型的資源
預設參數為列表:
def func(li = []): li.append(2) print(li) func() #[2] func() #[2, 2] func([]) #[2] func() #[2, 2, 2]
預設參數為字典:
def func(dic = {}): dic['a'] = 'v' print(dic) func() #{'a': 'v'} key是唯一所以每一次都是覆蓋 func() #{'a': 'v'} func({}) #{'a': 'v'} func() #{'a': 'v'}
def func(k,dic = {}): dic[k] = 'v' print(dic) func('a') #{'a': 'v'} func('b') #{'a': 'v', 'b': 'v' func('c') #{'a': 'v', 'b': 'v', 'c': 'v'}
c.動態參數:
①動態接收位置參數:*args 接收所有的位置參數,再以元祖的形式賦予args
def sum_data(*args): res = 0 for i in args: res += i return res print(sum_data(1,2,3,4,7,8,-10)) #15
②動態接收關鍵字參數:**kwargs 接收所有的關鍵字參數,再以字典的形式賦予kwargs
def print_data(**kwargs): print(kwargs) print_data(name='Jane',sex='female',age=22) #{'name': 'Jane', 'sex': 'female', 'age': 22}
兩種不同類型的動態參數可以一起使用,這樣會大大提升參數擴展性,也解決了大多數實參一一對應的難題
<2>實際參數:在調用函數時使用的參數變數
a.位置參數:從左到右和形參的位置一一對應
def print_info(name,sex,age): print("{} {} {}".format(name,sex,age)) print_info('Jane','female',15) #Jane female 15
b.關鍵字參數:當用於繁雜的數據時,不需要記住參數的位置,只需要記住參數的名字即可
def print_info(name,sex,age): print("{} {} {}".format(name, sex, age)) print_info(name='Jane',sex='female',age = 15) #Jane female 15
c.混合參數:就是位置參數和關鍵字參數可以混合著使用
原則:當使用這種寫法就一定要註意位置參數必須要在關鍵字參數之前
def print_info(name,sex,age): print("{} {} {}".format(name, sex, age)) print_info('Jane','female',age = 15) #Jane female 15
*的用法: