Python函数的4种传值的方式

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'>
"""
原文地址:https://www.cnblogs.com/lazy-sang/p/13932882.html