python 函数参数

    科技2025-06-15  13

    函数参数

    前言一、必选参数二、默认参数(缺省参数)三、可变参数三、关键字参数三、参数组合总结


    前言

    函数的四种参数


    一、必选参数

    顾名思义,必选参数就是函数调用时必须要有的参数,如下:

    def test(x): for i in range(x): print(i) #调用test函数,参数为2 test(2) #以下是错误的调用 test()

    二、默认参数(缺省参数)

    默认参数就是当函数没有参数时,使用默认值,当函数有参数时,使用函数传入值。

    在定义时:参数名=参数值

    如下:

    def test(name='猪猪侠'): print(name) test('叮当猫') #叮当猫 test() #猪猪侠

    但是在传入默认参数时需要注意一点:

    def test(name=[]): name.append('hh') print(name) test() #['hh'] test() #['hh', 'hh'] test() #['hh', 'hh', 'hh']

    我们可以注意到,在test被多次调用时默认参数会被一直改变。 所以要注意在设置默认参数是,要确保默认参数必须指向不变对象。

    三、可变参数

    可变参数说的是参数的个数可以变,可以是0个也可以是多个。

    在定义时:*参数名参数接收时会把接受的数据转化为list或tuplu。

    如下:

    def test(*num): print(num) n=[1,2,3] #前面加上*就可以把list或者tuple传入 test(*n) #(1, 2, 3) test(1,2,3) #(1, 2, 3) test() #()

    三、关键字参数

    可变参数允许传入0个参数,传入参数以关键值对的形式传入,会被在内部组装为dict。

    在定义时:**参数名参数接收时会把接受的数据转化为dict。
    def test(**name): print(name) n={'p1':'alley','p2':'shellmay','p3':'Dammy'} test(**n) #{'p1': 'alley', 'p2': 'shellmay', 'p3': 'Dammy'} test(p1=n['p1'],p2=n['p2']) #{'p1': 'alley', 'p2': 'shellmay'} test(p1=n['p1']) #{'p1': 'alley'}

    三、参数组合

    使用顺序:

    必选参数默认参数可变参数关键字参数

    如图:

    def func(a,b,c=0,*args,**kw): print(a,b,c,args,kw) func(1,2) #1 2 0 () {} func(1,2,3) #1 2 3 () {} func(1,2,3,args=[],kw={}) #1 2 3 () {'args': [], 'kw': {}} func(1,2,3,'a','b') #1 2 3 ('a', 'b') {} func(1,2,3,'a','b',x='9') #1 2 3 ('a', 'b') {'x': '9'} func(*args,**kw) #1 2 3 (4,) {'x': 10}

    可以看到对于任意函数,都可以通过类似func(*args, **kw)的形式调用它,无论它的参数是如何定义的。


    总结

    默认参数一定要用不可变对象,如果是可变对象,运行会有逻辑错误*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})使用*args和**kw是Python的习惯写法,当然也可以用其他参数名,但最好使用习惯用法
    Processed: 0.011, SQL: 8