python引數
引數
python的函式具有很靈活的引數形式,可以是:
位置引數(最常見的引數,可以使用tuple代替),
預設引數(給預設值),
可變引數(引數的個數可以改變,傳入的其實是list或者tuple),
關鍵字引數(傳入的其實是dict)。
位置引數
#引數 #位置引數 預設引數 #計算x的n次方 def power(x,n=2): s=1 while n>0: s=s*x n=n-1 return s print(power(3)) 》9 print(power(4,4)) 》256
預設引數
#預設引數 小心有坑 def add_end(L=[]): L.append(`end`) print( L) add_end() 》[`end`] add_end() 》[`end`, `end`]
這裡第二次呼叫方法的時候輸出不再是[`end`]而是[`end`, `end`]
定義預設引數要牢記一點:預設引數必須指向不變物件!
要修改上面的例子,我們可以用None
這個不變物件來實現:
def add_end(L=None): if L is None: L=[] L.append(`end`) print( L) add_end() 》[`end`] add_end() 》[`end`]
這樣無論呼叫多少次都輸出[`end`]
可變引數
在引數前面加一個星號*,函式內部引數接受到的是一個tuple
#可變引數 #計算a2 + b2 + c2 + …… def calc(*arg): sum=0 for n in arg: sum=sum+n*n return sum print(calc(1,2,3,4)) 》30
也可以直接把一個list或者tuple的元素變成可變引數傳進去,在變數前面加一個星號*
#把list或者tuple做可變引數 num=list(range(1,4)) print(calc(*num)) 》14
關鍵字引數
引數可以是0個或任意帶引數名的引數,這些引數在函式內部自動組成為一個dict
#關鍵字引數 def person(name,age,**kw): print(`name:`,name,` age:`,age,`other:`,kw) person(`Peter`,35) 》name: Peter age: 35 other: {} person(`Peter`,35,city=`SH`,sex=`F`) 》name: Peter age: 35 other: {`city`: `SH`, `sex`: `F`} #把dict做關鍵字引數 extra={`city`:`SH`,`job`:`Engineer`} person(`Peter`,35,**extra) 》name: Peter age: 35 other: {`city`: `SH`, `job`: `Engineer`}
要注意定義可變引數和關鍵字引數的語法:
*args
是可變引數,args接收的是一個tuple;
**kw
是關鍵字引數,kw接收的是一個dict。
可變引數既可以直接傳入:func(1, 2, 3)
,又可以先組裝list或tuple,
再通過*args
傳入:func(*(1, 2, 3))
;
關鍵字引數既可以直接傳入:func(a=1, b=2)
,又可以先組裝dict,
再通過**kw
傳入:func(**{`a`: 1, `b`: 2})
。
請注意:
引數定義的順序必須是:必選引數、預設引數、可變引數、命名關鍵字引數和關鍵字引數。
對於任意函式,都可以通過類似func(*args, **kw)的形式呼叫它,無論它的引數是如何定義的。
相關文章
- Python多值引數Python
- (2)python引數Python
- python parameter引數Python
- python變數和引數Python變數
- python初識引數Python
- 使用 Python 解析引數Python
- 引數匹配模型——Python學習之引數(二)模型Python
- 引數匹配順序——Python學習之引數(三)Python
- Python函式/動態引數/關鍵字引數Python函式
- python---函式引數、變數Python函式變數
- Python基礎(11):引數Python
- Python中的引數遮蔽Python
- python引數解析argparse用法Python
- python疑問5:位置引數,預設引數,可變引數,關鍵字引數,命名關鍵字引數區別Python
- python json格式轉url引數&分割, url引數轉json格式PythonJSON
- Python函式的位置引數、關鍵字引數精講Python函式
- Python函式引數總結Python函式
- python argparse(引數解析模組)Python
- Python學習之引數(一)Python
- python函式變長引數Python函式
- Python使用Argparse讀取命令引數Python
- [Python] 傳遞引數前面的*或**Python
- Python可變引數*args和**kwargsPython
- python sorted()函式的引數用法Python函式
- Python怎麼傳遞不定引數Python
- python中getattr如何帶引數呼叫?Python
- python預設引數的使用注意Python
- Python3之函式的引數傳遞與引數定義Python函式
- 1分鐘掌握 Python 函式引數Python函式
- Python命令列引數解析模組argparsePython命令列
- python基礎之 函式的引數Python函式
- python中函式的引數傳遞Python函式
- python不定長引數如何呼叫函式?Python函式
- 『無為則無心』Python函式 — 29、Python變數和引數傳遞Python函式變數
- python中關鍵字引數的個數有限制嗎?Python
- Python語法—函式及引數傳遞Python函式
- Python 中__init__函式以及引數selfPython函式
- python獲取命令列引數的程式碼Python命令列