學過php或者其他語言的同學都知道,php裡面的引數不是個數不是可變的(只是很多時候是可以省略的,因為在函式定義的時候為引數設定了預設值)。但是在python裡卻不是這樣,python裡面執行可變引數的出現,引數中出現(*arg,**arg2)的形式。
今天我們來詳解一下這種用法:
例如:
def foo1(arg1,arg2,key1=1,key2=2,*arg,**keywords):
print "arg1 parameters is ",arg1
print "arg2 parameters is ",arg2
print "key1 parameter is ",key1
print "key2 parameter is ",key2
print "Arbitrary parameter is ", arg
print "keywords parameter is ",keywords
foo1(1,2,3,4,5,6,k1=1,k2=2,k3=3)
輸出:
arg1 parameters is 1
arg2 parameters is 2
key1 parameter is 3
key2 parameter is 4
arg parameter is (5, 6)
keywords parameter is {'k3': 3, 'k2': 2, 'k1': 1}
函式引數分為四部分:
arg1,arg2,key1,key2普通引數
*arg 非關鍵字引數列表
**keywords 關鍵字引數列表
函式聲名部分,引數的四個部分不可顛倒位置,可以沒有其中某幾部分。
python函式的這種特性使得函式引數更加靈活,引數個數也不受限制。
注意:這種用法常用在python的裝飾器中,至於什麼是裝飾器,它是python裡面非常重要的一個特性,我會在以後詳解
關鍵字引數與非關鍵字引數(可變引數)詳解
相關文章
- python疑問5:位置引數,預設引數,可變引數,關鍵字引數,命名關鍵字引數區別Python
- Python關鍵字引數Python
- 函式的關鍵字引數函式
- Python函式/動態引數/關鍵字引數Python函式
- Python 函式 (關鍵字引數)Python函式
- Python函式的位置引數、關鍵字引數精講Python函式
- python中關鍵字引數的個數有限制嗎?Python
- 全網最適合入門的物件導向程式設計教程:48 Python函式方法與介面-位置引數、預設引數、可變引數和關鍵字引數物件程式設計Python函式
- Python 關鍵字global全域性變數詳解Python變數
- 預設引數和關鍵字參數列面上最大的區別是?
- js判斷引數是否為非數字JS
- Python 的 Keyword-Only Arguments (強制關鍵字引數)Python
- java 之泛型與可變引數詳解Java泛型
- C語言可變引數詳解C語言
- iOS可變引數(不定引數)的用法iOS
- kettle 引數——變數引數和常量引數變數
- Swift語言中為外部引數設定預設值可變引數常量引數變數引數輸入輸出引數Swift變數
- 【Java】可變引數Java
- Swift: 可變引數Swift
- Java可變引數Java
- Java 可變引數Java
- Dockerfile - 引數與詳解Docker
- java:識別符號 關鍵字 變數Java符號變數
- go-可變引數Go
- 集合框架-可變引數框架
- Python可變引數Python
- 可變引數例項
- Retrofit 動態引數(非固定引數、非必須引數)(Get、Post請求)
- Java方法04:命令列傳遞引數、可變引數Java命令列
- 關於靜態引數和動態引數
- 【DataGuard】部署Data Guard相關引數詳解
- oracle 10g rac ggs關鍵引數配置Oracle 10g
- 電商API介面:lazada按關鍵字搜尋商品(引數、返回值說明)API
- 機器學習引數模型與非引數模型/生成模型與判別模型機器學習模型
- Java 的可變引數與 Collections 類Java
- hadoop之 YARN配置引數剖析—RM與NM相關引數HadoopYarn
- ajax 引數詳解
- DockerFile引數詳解Docker