1. 位置引數
呼叫函式時傳入實際引數的數量和位置都必須和定義函式時保持一致。
2. 關鍵字引數
好處:不用記住形參位置。
所謂關鍵字就是「鍵-值」繫結,呼叫函式時,進行傳遞。
特點:位置引數和關鍵字引數混合傳參時,位置引數必須在關鍵字引數的前面,關鍵字引數之間不存在先後順序。
3. 預設引數
好處:呼叫函式時可以不指定某個引數,使用預設值。
當定義乙個有預設值引數的函式時,有預設值的引數必須位於所有沒預設值引數的後面。預設引數一定要用不可變物件,如果是可變物件,程式執行時會有邏輯錯誤!
使用「函式名.__defaults__」檢視函式的預設值引數的當前值,其返回值是乙個元組。
4. 可變引數(*args,**kwargs)
1. *args是arguments單詞縮寫,表示任意多個無名引數,是乙個tuple,如 (1,2,3,'a','b','c')。*位置引數。
2. **kwargs是keyword arguments單詞縮寫,表示關鍵字引數,是乙個dict,如。**關鍵字引數。
#coding:utf-8
def foo(*args,**kwargs):
print('
args=
',args)
print('
kwargs=
',kwargs)
print('
*'*20) if
__name__=='
__main__':
#只傳引數*args=(1,2,3)
foo(1,2,3)
#只傳引數**kwargs=dict(a=1,b=2,c=3)
foo(a=1,b=2,c=3)
#傳入引數*args=(1,2,3)
#傳入引數**kwargs=dict(a=1,b=2,c=3)
foo(1,2,3,a=1,b=2,c=3)
#傳入引數*args=(1,'b','c')
#傳入引數**kwargs=dict(a=1,b='b',c='c')
foo(1,'
b','
c',a=1,b='
b',c='
c')
輸出:
args= (1, 2, 3)kwargs={}
********************args=()
kwargs=
********************args= (1, 2, 3)
kwargs=
********************args= (1, '
b', 'c'
)kwargs=
********************
當同時使用*args和**kwargs時,*args引數必須在**kwargs前。否則會提示語法錯誤"syntaxerror: non-keyword arg after keyword arg"。
呼叫函式時如何傳入可變引數和關鍵字引數的語法:
可變引數既可以直接傳入:func(1, 2, 3),又可以先組裝list或tuple,再通過*args傳入:func(*(1, 2, 3));
關鍵字引數既可以直接傳入:func(a=1, b=2),又可以先組裝dict,再通過**kw傳入:func(**)。
其餘參考:
Python函式傳入引數方式總結
位置引數是最簡單的傳入引數的方式 def func a,b print a b func 1,3 3預設引數是在呼叫函式的時候使用一些包含預設值的引數 def power x,n 2 s 1while n 0 n 1 s n return s可變引數允許在呼叫引數的時候傳入多個引數,這些引數在呼叫時...
jpython 傳入引數 python函式傳值
python函式傳值到底傳什麼?有很多文章講過這個,但是前兩天被問到居然還是有點不清楚,有點蒙,今天就具體好好看看這個。def test a a 10 print a 這個函式接受乙個輸入,假設輸入20,那麼輸出10,python在傳遞引數的將20的引用傳入,然後函式體內重新賦值,新建了乙個物件10...
Python3 函式引數的傳入
在運維過程中,有些時候需要向main函式中傳遞引數,以方便運維與測試,那麼怎麼向main函式中傳入多個引數呢,下面以python3中的main函式為例,簡單講一下。首先我們需要import sys,sys是python3的乙個標準庫,也就是乙個官方的模組。封裝了一些系統的資訊和介面,然後再說說ar ...