''' 實參:調用函數,在括號內傳入的實際值,值能夠爲常量、變量、表達式或三者的組合 ***** 形參:定義函數,在括號內聲明的變量名,用來接受外界傳來的值,外部提早產生了的變量,內部能夠使用 '''''' 注:形參隨着函數的調用而產生,隨着調用結束而銷燬 '''
''' 位置實參:不用明確形參名的傳參方式,必定按照位置給形參傳值 關鍵字實參:必須明確形參名字與值爲形參傳值,能夠不用按照位置 ***** 注:混用 1.關鍵字實參必須出如今位置實參後 2.多個位置實參仍是按照位置傳參 3.關鍵字實參爲沒有從位置實參拿到值的形參傳值,能夠不用按照指定順序 ''' def fn2(a, b, c, d, e, f): print(a, b, c, d, e, f) fn2(10, 20, 30, e=100, f=500, d=200)
# positional argument def fn(a, b, c): print(a, b, c) # 位置形參能夠由 位置實參 與 關鍵字實參 來傳值 fn(10, 20, 30) fn(a=10, b=20, c=30)
def fn(a=10,b=20): print(a, b) # 默認形參能夠由 位置實參 與 關鍵字實參 來傳值,還能夠不用傳值(採用自身默認值) fn() fn(20, 30) fn(a=200, b=300) fn(100) # 就給a傳 fn(b=100) # 就給b傳 # 混用 # 位置形參與默認形參同時存在,默認形參必須在後 def fn1(a,b,c=10,d=20): print(a, b, c, d) # 位置形參必須傳值,默認形參分狀況傳值 fn1(100, 200, d=1000)
# 可變長形參會以 元組 形式接受 位置形參與默認形參未接受完的 全部傳入的位置實參,用索引來取第幾個 # 可變長形參只能由 位置實參 來傳值 ***** def fn(a, b=10, *args): print(a, b) print(args) # 小細節:可變長形參只能接受位置實參的值,位置實參還必須在關鍵字實參前, # 致使默認形參只能由位置實參來傳值 fn(1, 20, 100, 200) # 1給a 20給b,不能用b=20傳 100,200給args
# 前提:出如今 * 以後的形參 def fn(a, b=10, *, c, d=20, e): pass # c,d,e都是出如今*以後,都是關鍵字形參,因爲必須由 關鍵字實參 來傳值,沒有順序的強行要求 # 可變長關鍵字形參:用來接收沒有被關鍵字形參接收完的關鍵字形參,也只能由關鍵字實參來傳值 # 用字典來存放數據 def fn(**kwargs): print(kwargs) fn(a=10,b=20) # {'a': 10, 'b': 20} dic = {'x': 100, 'y': 200} fn(**dic) # {'x': 100, 'y': 200}
def fn(a, b, c=10, *args, d, e=20, f, **kwargs): pass # 位置形參:a、b # 默認形參:c # 可變長位置形參:args # 無初值關鍵字形參:d、f # 有初值關鍵字形參:e # 可變長關鍵字參數:kwargs # 1.位置形參與默認形參: 能用 位置實參 關鍵字實參 傳值 # 2.可變長位置形參:只能 位置實參 傳值 # 3.因此關鍵字形參:只能 關鍵字實參 傳值