Python_復習_默認參數的陷阱_24
阿新 • • 發佈:2019-04-05
結束 urn () 形參 code 數據類型 陷阱 接收 賦值
# 函數
# 可讀性強 復用性強
# def 函數名():
# 函數體
#return 返回值
# 所有的函數 只定義不調用就一定不執行
#先定義後調用
#函數名() #不接收返回值
#返回值 = 函數名() #接收返回值
#返回值
# 沒有返回值 :默認返回None
# 不寫return:函數內的代碼執行完畢自動結束
# 只寫return:結束一個函數
# return None
# 返回一個值 :結束了函數且返回一個值,可以是任意的值
# 返回多個值 : 多個值之間用逗號隔開,接收的時候可以用一個變量接收(元組),也可以用等量的多個變量接收
# def f(a):
# return ‘栗子‘
#
# ret = f(‘蘋果‘)
# print(f(‘蘋果‘))
#參數
#形參 定義函數的時候
# 位置參數 :必須傳
# *args :動態參數 可以接收任意多個按位置傳入的參數
# 默認參數 : 可以不傳 —— 陷阱
# **kwargs : 動態參數 可以接受任意多個按關鍵字傳入的參數
#實參 調用函數的時候
# 按照位置傳參數
# 按照關鍵字傳參數
# 可以混用 位置參數必須在關鍵字傳參之前# 不能對一個參數重復賦值
# def 娃哈哈(*args):
# print(args)
#
# # 娃哈哈(1,2,3,4)
# l = [1,2,3,4]
# 娃哈哈(*l)
默認參數的陷阱
def qqxing(l = []): l.append(1) print(l) qqxing() #[1] qqxing([]) #[1] qqxing() #[1,1] qqxing() #[1, 1, 1] # 如果默認參數的值是一個可變數據類型, # 那麽每一次調用函數的時候, # 如果不傳值就公用這個數據類型的資源def qqxing(l = {}): # l.append(1) l[‘k‘] = ‘v‘ print(l) qqxing() #{‘k‘: ‘v‘} qqxing() #{‘k‘: ‘v‘} qqxing() #{‘k‘: ‘v‘} def qqxing(k,l = {}): # l.append(1) l[k] = ‘v‘ print(l) qqxing(1) #{1: ‘v‘} qqxing(2) #{1: ‘v‘, 2: ‘v‘} qqxing(3) #{1: ‘v‘, 2: ‘v‘, 3: ‘v‘} def qqxing(k, l = {}): # l.append(1) l[k] = ‘v‘ print(l) qqxing(1) #{1: ‘v‘} qqxing(2, l={}) #{2: ‘v‘} qqxing(3) #{1: ‘v‘, 3: ‘v‘}
Python_復習_默認參數的陷阱_24