Python中的函数参数

默认参数:

        默认参数必须放在必选参数后;

        一般来讲,经常变化的参数放在前面,不经常变化的放在后面;

        多个默认参数时,入参按顺序赋值,也可以用指定参数名的方式赋值。

        默认参数必须指向不可变对象!因为函数定义时,默认参数就定义了,如果参数指向对象可变,调用函数时改变了对象,则下次调用函数时,默认参数的值就不是定义时的值了。

 

可变参数:

        def func(*numbers):

            pass

        该函数可以有任意个参数。在函数内部,numbers接收到一个tuple。  

        Python允许在list和tuple变量前加一个*号,将list和tuple的元素变成可变参数传入。这样比先取出元素在传入函数来的方便。

        nums = [1,2,3]

        func(*nums)

 

关键字参数:

        关键字参数允许用户传入任意个含参数名的参数,在函数内部这些参数组成一个dict。

        def person(name,age,**kw):

            print(“name:”,name, “age:”, age, “other:”, kw)

         与可变参数一样,Python允许在dict前加**,将dict的元素传入关键字参数。

         extra= {‘city’:’beijing’, ‘job’:’doctor’}

         person(‘jack’,25, **extra)

         在函数内部,kw获得的是extra的一个拷贝,内部修改dict不会影响函数外的dict。

 

命名关键字参数:

        命名关键字参数用于限制关键字参数的名字。例如只接受city和job关键字参数,

        def person(name, age, *, city, job):

            pass

        命名关键字参数需要*作为特殊分隔符(不是参数),后面为关键字参数名字。

        调用时必须传入参数名。命名关键字参数可以有默认值。

 

参数组合

         除了可变参数和命名关键字参数无法混合,其他可以相互组合使用。但顺序必须是:必须参数、默认参数、可变参数/命名关键字参数、关键字参数。

        def f1(a, b, c=0, *args, **kw):

            pass

        def f2(a, b, c=0, *, d, **kw):

            pass

        而且,通过tuple和dict也可以调用以上函数,

         args= [1,2,3,4]

         kw={‘d’:99,‘x’:’#’}

         f1(*args,**kw)

         args= [1,2,3]

         kw= {‘d’:99, ‘x’:’#’}

         f2(*args,**kw)

        对于任意函数,都可以通过func(*args, **kw)的方式调用,不论其参数如何定义。

        可变参数和关键字参数习惯上使用*args和**kw。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值