python函式引數的詳解

2021-09-14 01:58:03 字數 2332 閱讀 8907

'''

實參:呼叫函式,在括號內傳入的實際值,值可以為常量、變數、表示式或三者的組合

*****

形參:定義函式,在括號內宣告的變數名,用來接受外界傳來的值

''''''

注:形參隨著函式的呼叫而產生,隨著呼叫結束而銷毀

'''

'''

位置實參:不用明確形參名的傳參方式,一定按照位置給形參傳值

關鍵字實參:必須明確形參名字與值為形參傳值,可以不用按照位置

*****

注:混用

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

deffn

(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傳

# 混用

# 位置形參與預設形參同時存在,預設形參必須在後

deffn1

(a,b,c=

10,d=20)

:print

(a, b, c, d)

# 位置形參必須傳值,預設形參分情況傳值

fn1(

100,

200, d=

1000

)

# 可變長形參會以 元組 形式接受 位置形參與預設形參未接受完的 所有傳入的位置實參,用索引來取第幾個

# 可變長形參只能由 位置實參 來傳值 *****

deffn

(a, b=10,

*args)

:print

(a, b)

print

(args)

# 小細節:可變長形參只能接受位置實參的值,位置實參還必須在關鍵字實參前,

# 導致預設形參只能由位置實參來傳值

fn(1,20

,100

,200

)# 1給a 20給b,不能用b=20傳 100,200給args

# 前提:出現在 * 之後的形參

deffn

(a, b=10,

*, c, d=

20, e):

pass

# c,d,e都是出現在*之後,都是關鍵字形參,由於必須由 關鍵字實參 來傳值,沒有順序的強行要求

# 可變長關鍵字形參:用來接收沒有被關鍵字形參接收完的關鍵字形參,也只能由關鍵字實參來傳值

# 用字典來存放資料

deffn

(**kwargs)

:print

(kwargs)

fn(a=

10,b=20)

# dic =

fn(**dic)

#

def

fn(a, b, c=10,

*args, d, e=

20, f,

**kwargs)

:pass

# 位置形參:a、b

# 預設形參:c

# 可變長位置形參:args

# 無初值關鍵字形參:d、f

# 有初值關鍵字形參:e

# 可變長關鍵字引數:kwargs

# 1.位置形參與預設形參: 能用 位置實參 關鍵字實參 傳值

# 2.可變長位置形參:只能 位置實參 傳值

# 3.所以關鍵字形參:只能 關鍵字實參 傳值

python函式的引數詳解

函式定義的格式 def my func pass 函式的引數 形參,實參,關鍵字引數 必須引數 def my func with param p1,p2 print p1,p2 my func with param 1,2 關鍵字引數 是在呼叫的時候制定引數名稱,可以不按照順序傳 def my fu...

python函式引數詳解

如果你傳入的引數物件是可變物件 列表,字典,這個時候就是引用傳遞。如果你傳入的引數物件是不可變的物件 數字,元組,字串,這個時候就是值傳遞。對於值傳遞,函式內部修改的是引數的副本,不會改變原值 對於引用傳遞,函式內部修改了是變數的指向,從而相應對變數進行了改變。舉例如下 當引數是不可變物件時 a 1...

python之函式的引數詳解

不可變資料型別 數字number 含int float bool complex 字串string 元組tuple。當不可變資料型別被當作函式的引數,傳遞的是值,函式體內改變值時實際是生成新的物件,不會影響函式體外原來的值。例如 x 10 def print add ten x x 10 print...