Python函數的4種傳值的方式param,param=value,*param,**param
必選傳參param
# 必選參數 func(param):
# 1、定義函數時的參數個數,順序已定義好,在調用函數調時的參數個數、順序必須一致,不能多,也不能少,也不能亂(和之前的順序一致),因此叫必選參數,這是最常用的傳參方式
def test(param1,param2,param3):
print param1,param2,param3
test(1,"hello",True)
test(True,1,"hello")
"""
執行結果:
1 hello True
True 1 hello
"""
默認傳參param=value
# 默認參數func(param=value):
# 1、定義函數時,已為參數設定一個默認值,假如調用函數時不傳參,在函數內部使用參數時的值則為默認值,傳參時則和必選參數一樣使用
# 2、如果必選參數和默認參數同時存在,則默認參數必須跟在必選參數后面
# 3、如果有多個默認參數,調用時順序可以不一致,但是必須要顯式表明是哪個默認參數,例如 param2=100,但是建議統一按照函數定義的順序進行使用
def test(param1,param2=100,param3=True):
print param1,param2,param3
test(1) # 默認參數可以不傳
test(1,"hello",False) # 多個默認參數時,調用順序一致
test(1,param3=False,param2="hello") # 調用順序也可以不一致
"""
執行結果:
1 100 True
1 hello False
1 hello False
"""
可選參數*param
# 1、定義函數時,當傳入的參數個數不確定,可能為0個,1個,2個.。。。多個時,則可用可選參數表示,書寫格式為參數名稱前帶一個*號
# 2、可選參數在調用時的形式是以一個tuple元組形式存在,即param是一個元組
# 3、當定義了一個可變參數時,可以把一個列表或者元組作為一個整體的參數進行傳遞,只需要在傳遞的時候,列表或者元組變量名前帶*則可
# 4、當有必選參數,默認參數,可選參數時,必須按照必選參數,默認參數,可選參數進行定義
# 5、推薦寫法是*args,但是寫成啥都可以
def test(param1,param2=100,*param3):
def printP12():
print param1,param2
def printP123():
print param1,param2,param3,type(param3)
printP123() if len(param3)!=0 else printP12()
test(1,2,3,4,5,6)
li = [1,2,3,4]
tu = (1,2,3,4)
test(1,2,*tu)
"""
運行結果:
1 2 (3, 4, 5, 6) 3 <type 'tuple'>
1 2 (1, 2, 3, 4) 1 <type 'tuple'>
"""
關鍵字參數**param
# 1、定義函數時,當傳入的參數個數不確定,可能為0個,1個,2個.。。。多個時,則可用關鍵字參數表示,它與可變參數區別在於傳參時必須使用默認參數的形式進行傳參,例如param1=1,param2=2
# 2、關鍵字參數在調用時的形式是以一個dict字典形式存在,即param是一個字典
# 3、當定義了一個關鍵字參數時,可以把一個列表作為一個整體的參數進行傳遞,只需要在傳遞的時候,字典變量名前帶**則可
# 4、當有必選參數,默認參數,可選參數,關鍵字參數時,必須按照必選參數,默認參數,可選參數,關鍵字參數進行定義
# 5、推薦寫法是**kwargs,但是寫成啥都可以
def test(param1,param2=100,*param3,**param4):
def printP12():
print param1,param2
def printP1234():
print param1,param2,param3,param4,type(param4)
printP1234() if len(param3)!=0 and len(param4)!=0 else printP12()
test(1,10,11,a=1,b=2,c=3)
dict = {"a":1,"b":2,"c":3}
test(1,10,11,**dict)
"""
執行結果:
1 10 (11,) {'a': 1, 'c': 3, 'b': 2} <type 'dict'>
1 10 (11,) {'a': 1, 'c': 3, 'b': 2} <type 'dict'>
"""