为了账号安全,请及时绑定邮箱和手机立即绑定

任意关键字参数

 def __init__(self, name, gender, birth, **kw):

这里的参数可以换成*args吗?为什么。

正在回答

2 回答

不可以。

因为**kw代表的是所有的类似 job='student'这样的参数,然后是以dict的形式传递给函数。等号前面的值作为dict中的key,等号后面的值作为dict中对应的value。

而*args代表的是剩余的不带等号的参数,用元组的形式传递给函数内部处理。

3 回复 有任何疑惑可以回复我~

不可以,因为**kw,kw这里是dict类型的,例如

class Person(object):

    def __init__(self, name, gender, **kw):

        self.name = name

        self.gender = gender

        for k,v in kw.items():

            setattr(self,k,v)

p = Person('Bob', 'Male', age=18, course='Python')

这里kw就表示的是{age:18 , course:'Python'},需要有关键字和对应的值

换成*args,args是tuple类型的,如果定义一个函数def f(*args),那f函数的参数就可以有多个值,比如调用f(1,2,3,'a'),那args = (1,2,3,'a'),但不能像**kw那样可以添加类似于age和course这样的属性名

11 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255533    人
  • 解答问题       3038    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

任意关键字参数

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号