Python中關鍵字引數和命名關鍵字引數的區別

2021-09-25 12:59:31 字數 1039 閱讀 4152

python中函式的引數有位置引數、預設引數、可變引數、命名關鍵字引數和關鍵字引數,這個順序也是定義函式時的必須順序。本文主要是講講命名關鍵字引數和關鍵字引數的區別:

可變引數允許你傳入0個或任意個引數,這些可變引數在函式呼叫時自動組裝為乙個tuple。而關鍵字引數允許你傳入0個或任意個含引數名的引數,這些關鍵字引數在函式內部自動組裝為乙個dict。

形如:

>>

>

defperson

(name,age,

**kw)

:print

("name:"

,name,

"age:"

,age,

"other:"

,kw)

>>

> person(

"bbj",23

,city=

"hefei"

,habit=

"basketball"

)name: bbj age:

23 other:

>>

>

關鍵字引數按我的理解就是在呼叫時可以傳入無數個自命名的引數,這裡的關鍵字也就是自己命名的意思。所有的關鍵字引數會自動組裝成乙個字典。

同樣是關鍵字引數,為何又加入「命名」兩個字呢,意思就是在函式定義時給定好有哪些引數。

形如:

>>

>

defperson

(name, age,

*, city, job)

:print

(name, age, city, job)

>>

> person(

'bbj',23

,city=

'hefei'

,job=

'engineer'

)bbj 23 hefei engineer

>>

>

*後面的city、job都是命名關鍵字引數,在呼叫的時候與位置引數不同的是必須給出引數名否則呼叫時會報錯。如果有可變引數在之前的時候則不需要額外的*,

命名關鍵字引數

如果要限制關鍵字引數的名字,就可以用命名關鍵字引數,例如,只接收city和job作為關鍵字引數。這種方式定義的函式如下 def person name,age,city,job print name,age,city,job 和關鍵字引數 kw不同,命名關鍵字引數需要乙個特殊分隔符 後面的引數被視為...

python位置引數和關鍵字引數

剛學用python的時候,特別是看一些庫的原始碼時,經常會看到func args,kwargs 這樣的函式定義,這個 和 讓人有點費解。其實只要把函式引數定義搞清楚了,就不難理解了。先說說函式定義,我們都知道,下面的 定義了乙個函式funca def funca pass 顯然,函式funca沒有引...

Python位置引數和關鍵字引數

位置引數 positional argument 不帶 變數名 的值,賦給相應位置的區域性變數 關鍵字引數 keyword argument 前面可以加上 變數名 的值,賦給同名的區域性變數 僅位置引數 positional only 在 之前定義的引數,使用時不能帶變數名 僅關鍵字引數 keywo...