zoukankan      html  css  js  c++  java
  • 关键字参数

    关键字参数允许你传入0个或任意多个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict
    对于关键字参数,函数的调用者可以传入任意不受限制的关键字参数,以扩展函数的功能
    但至于到底传入了哪些关键字参数,就需要在函数内部通过kw检查

    定义关键字参数函数

    def person(name, age, **kw): #函数person除了必选参数name和age外,还接受关键字参数kw
      print('name:', name, 'age:', age, 'other:', kw)
    
    person('Michael', 30) #输出:name: Michael age: 30 other: {},调用该函数时,可只传入必选参数
    person('Bob', 35, city='Beijing') #输出:name: Bob age: 35 other: {'city': 'Beijing'},调用该函数时,也可传入任意个数的关键字参数

    和可变参数类似,也可先组装出一个dict后,再把该dict转换为关键字参数传进去

    extra = {'city': 'Beijing', 'job': 'Engineer'}
    person('Jack', 24, city=extra['city'], job=extra['job']) #输出:name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
    person('Jack', 24, **extra)  #输出:name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'},是上例的简写形式
                      # **extra表示把extra这个dict的所有key-value用关键字参数传入到函数的**kw参数,kw将获得一个dict
                      # 注意kw获得的dict是extra的一份拷贝,对kw的改动不会影响到函数外的extra

    调用者可传入不受限制的关键字参数

    def person(name, age, **kw):
      if 'city' in kw: #函数内可以对关键字参数进行检查
        # 有city参数
        pass
      if 'job' in kw:
        # 有job参数
        pass
    print('name:', name, 'age:', age, 'other:', kw)
    
    person('Jack', 24, city='Beijing', addr='Chaoyang', zipcode=123456) #关键字参数是任意的
  • 相关阅读:
    声明属性Hibernate的Annotation注解
    索引查询MySQL前缀索引导致的慢查询
    定义最小POJ 1384 PigBank
    执行调用bat文件启用dos命令
    控制器框架Struts与策略模式那点事
    路径位置JDK+tomcat 环境变量配置
    目录设置PHP和Apache环境搭建小记
    驱动源码看门狗用户空间程序(可用来检测服务器死机)
    安装文件MyEclipse6.5安装与卸载SVN插件方法
    问题文件Android Studio 安装完成不能打开等问题解决记录
  • 原文地址:https://www.cnblogs.com/shiliye/p/10906130.html
Copyright © 2011-2022 走看看