zoukankan      html  css  js  c++  java
  • python 基础——*args和**kwargs

    *args表示任何多个无名参数,它是一个tuple;**kwargs表示关键字参数,它是一个dict。

    def func(one, *args, **kwargs):
        print type(one)
        print type(args)
        print type(kwargs)
        print one
        print args
        print kwargs
        
    func('hello', 1, 2, name='Bob', age='10')
    func(1, 1, 2, name='Bob', age='10')
    #输出
    '''
    <type 'str'>
    <type 'tuple'>
    <type 'dict'>
    hello
    (1, 2)
    {'age': '10', 'name': 'Bob'}
    <type 'int'>
    <type 'tuple'>
    <type 'dict'>
    1
    (1, 2)
    {'age': '10', 'name': 'Bob'}
    '''

    注意:同时使用*args和**kwargs时,必须普通参数在最前面,*args参数列要在**kwargs前,像foo(a=1, b='2', c=3, a', 1, None, )这样调用的话,会提示语法错误“SyntaxError: non-keyword arg after keyword arg”

    def func(*args, one, **kwargs):
        print type(one)
        print type(args)
        print type(kwargs)
        print one
        print args
        print kwargs
    
    #输出
    '''
    语法错误!
    File "<string>", line 1
        def func(*args, one, **kwargs):
                          ^
    SyntaxError: invalid syntax
    
    '''

    借助 **kwargs 的特性,可以用此来创建字典

    def kw_dict(**kwargs):
        return kwargs
    print kw_dict(a=1,b=2,c=3)
    #输出
    '''
    {'a': 1, 'c': 3, 'b': 2}
    '''
  • 相关阅读:
    子类构造函数 supper关键字
    匿名内部类
    IK 分词器 源码分析
    java重写equals方法
    java编程思想
    设置centos7默认运行级别
    centos7配置wordpress
    python安装tkinter
    centos 7编译安装apache
    关于python中带下划线的变量和函数 的意义
  • 原文地址:https://www.cnblogs.com/licongyu/p/5767989.html
Copyright © 2011-2022 走看看