zoukankan      html  css  js  c++  java
  • Python之*args,**kw

    #  *args代表非关键字可变参数的集合(元组),**kw代表关键字可变参数的集合(字典).

    classstudent(object):

           def__init__(self,id,*args,**kw):

                   print"id:",id

                    for i in args:

                            print"args:",i

                    for j in kw:

                            print"kw:",kw[j]

    student(1,2,3,name='pdk',sex='boy')

     

     

    输出:

    id: 1

    args: 2

    args: 3

    kw: pdk

    kw: boy

     

     

     

    补充:

    1、当函数的参数不确定时,可以使用*args和**kwargs。*args没有key值,**kwargs有key值

    2、*args表示任何多个无名参数,它是一个list;**kwargs表示关键字参数,它是一个dict。并且同时使用*args和**kwargs时,必须*args参数列要在**kwargs前

    另外,说明一点*args和**kwargs的名称不是固定不变,实际格式的重点是前面的*,格式要求是*XXX和**XXX,只是因为习惯用法约定俗成的,如同实例方法用self和类方法用cls一样,测试下面两端代码你就能有一定理解了,对比代码如下:

    【代码一】定义关键字参数为**kw

    class Person(object):
        def __init__(self, name, gender, **kw):
            self.name = name
            self.gender = gender
            for k, v in kw.iteritems():
                setattr(self, k, v)

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

    【代码二】定义关键字参数为**test

    class Person(object):
        def __init__(self, name, gender, **test):
            self.name = name
            self.gender = gender
            for k, v in test.iteritems():
                setattr(self, k, v)

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

    哈哈,这格式简直了。。。。。

  • 相关阅读:
    jQuery 工具函数
    cdh 5.13 centos6.9安装
    centos 6.9 NTP基准时间服务器配置
    cloudera cdh5.13.0 vmware 快速安装
    centos 7.3+nginx+jira(.bin)+mysql
    zabbix 3.2.6+centos 7 +nginx 1.12+ mysql 5.6+ Grafana +php 5.6
    centos 6.9 +nginx 配置GIT HTTPS服务器(证书采用自签名)
    好难啊 姿态解算 算是解决了
    stm32 iic读取mpu6050失败 改用串口
    stm32 延时函数 delay_ms 范围
  • 原文地址:https://www.cnblogs.com/pannyvan/p/6133983.html
Copyright © 2011-2022 走看看