`

Python tips: 什么是*args和**kwargs?

 
阅读更多
转自:http://www.cnblogs.com/fengmk2/archive/2008/04/21/1163766.html
先来看个例子:

def foo(*args, **kwargs):
    print 'args = ', args
    print 'kwargs = ', kwargs
    print '---------------------------------------'

if __name__ == '__main__':
    foo(1,2,3,4)
    foo(a=1,b=2,c=3)
    foo(1,2,3,4, a=1,b=2,c=3)
    foo('a', 1, None, a=1, b='2', c=3)
输出结果如下:
args =  (1, 2, 3, 4)
kwargs =  {}
---------------------------------------
args =  ()
kwargs =  {'a': 1, 'c': 3, 'b': 2}
---------------------------------------
args =  (1, 2, 3, 4)
kwargs =  {'a': 1, 'c': 3, 'b': 2}
---------------------------------------
args =  ('a', 1, None)
kwargs =  {'a': 1, 'c': 3, 'b': '2'}
---------------------------------------

可以看到,这两个是python中的可变参数。*args表示任何多个无名参数,它是一个tuple;**kwargs表示关键字参数,它是一个dict。并且同时使用*args和**kwargs时,必须*args参数列要在**kwargs前,像foo(a=1, b='2', c=3, a', 1, None, )这样调用的话,会提示语法错误“SyntaxError: non-keyword arg after keyword arg”。



呵呵,知道*args和**kwargs是什么了吧。还有一个很漂亮的用法,就是创建字典:

    def kw_dict(**kwargs):
        return kwargs
    print kw_dict(a=1,b=2,c=3) == {'a':1, 'b':2, 'c':3}
其实python中就带有dict类,使用dict(a=1,b=2,c=3)即可创建一个字典了。



“人生苦短,我用python。”
分享到:
评论

相关推荐

    Python可变参数*args和**kwargs用法实例小结

    在Python编程中,`*args` 和 `**kwargs` 是两个非常有用的语法特性,它们允许函数接收可变数量的参数。这些参数在函数定义时并不知道具体的数量,因此在需要处理不确定参数个数的情况时非常有用。本文将深入探讨这两...

    Python 中的*args 和**kwargs

    在Python编程语言中,`*args` 和 `**kwargs` 是两种非常重要的语法特性,它们允许函数接收可变数量的参数。这些参数在函数定义时不是预先定义好的,而是根据调用函数时传递的参数数量动态调整的。下面将详细解释它们...

    python函数参数*args**kwargs用法实例

    # 当函数的参数不确定时,可以使用*args和**kwargs。*args没有key值,**kwargs有key值 def fun_var_args(farg, *args): print ‘args:’, farg for value in args: print ‘another arg:’,value # *args可以当作...

    Python中args和kwargs的灵活应用与实践

    在Python函数编程中,*args和**kwargs是处理可变数量参数的两种非常灵活的方式。它们允许函数接受任意数量的位置参数和关键字参数,从而极大地增强了函数的通用性和灵活性。本文将详细介绍*args和**kwargs的概念、...

    Python中*args和**kwargs的区别详解

    在Python编程语言中,*args和**kwargs是两个非常重要的概念,它们用于函数定义中,允许函数接收不定数量的参数。尽管这两个概念在形式上类似,但它们处理参数的方式和用途有很大的不同。下面将详细解释*args和**...

    Python *args和**kwargs用法实例解析

    在Python编程语言中,`*args` 和 `**kwargs` 是两种特殊语法,它们用于处理函数调用时的可变参数。这些语法使得函数能够接受不确定数量的位置参数(`*args`)和关键字参数(`**kwargs`)。下面将详细解释它们的用法...

    深入理解Python中的args和kwargs及其应用

    - **函数装饰器**:在创建装饰器时,`*args`和`**kwargs`允许装饰器函数接收任意数量和类型的参数,然后将其传递给被装饰的函数。这样可以使得装饰器具有更高的通用性。 ```python def my_decorator(*args, **...

    python参数传递的*args和**kwargs

    **kwargs:表示的就是形参中按照关键字传值把多余的传值以字典的方式呈现 主要是 用来表示函数接收可变长度的关键字参数列表作为函数的输入。  *args: 就是以元组的形式来呈现多余的参数,接受非关键字的参数 ...

    Python函数中*args和**kwargs来传递变长参数的用法

    在Python编程语言中,函数参数的传递方式有很多种,其中*args和**kwargs是处理可变数量参数的特殊语法。这两个语法糖允许我们在函数定义时接收不确定数量的位置参数或关键字参数。本文将详细解释这两种语法的用法,...

    Python常用英文单词

    Python是一种广泛使用的编程语言,了解Python常用英文单词对于提高编程效率和理解代码至关重要。下面是Python常用英文单词的总结: 一、交互式环境与print输出 * print:打印/输出 * coding:编码 * syntax:语法 ...

    用实例说明python的*args和**kwargs用法

    先来看一个例子:复制代码 代码如下:>>> def foo(*args, **kwargs): print ‘args =’, args print ‘kwargs = ‘, kwargs print ‘———————–‘  >>> if __name__ == ‘__main__’: foo(1, 2, 3, 4) ...

    对python中的*args与**kwgs的含义与作用详解

    在Python编程语言中,*args和**kwargs是两个非常重要的特性,用于处理函数的可变数量参数。它们允许程序员向函数传递不确定数量的参数,并且以特定的方式处理这些参数。接下来,我们将详细解释这两个概念的含义和...

    Python:Python高级特性:装饰器与迭代器

    ### Python高级特性详解:装饰器与迭代器 #### 一、装饰器 ##### 1.1 装饰器的概念 装饰器是Python语言中一项非常强大的特性,它允许开发者在不修改原始函数代码的基础上,为其添加新的功能或行为。简而言之,...

    lambda_kwargs_args:当您需要重新学习lambda函数,** kwargs和* args时,可以使用此仓库,也可以用于了解这些pythonic功能!

    lambda,** kwargs和* args 当您需要重新学习lambda functions , **kwargs和*args时,可以使用此repo,也可以用来了解这些pythonic功能! 用 :red_heart: 通过mmtmn

    args-kwargs3:这次更喜欢Args&Kwargs,这次是使用Travis CI版本

    在Python编程语言中,`*args` 和 `**kwargs` 是两种非常重要的语法特性,它们允许我们传递可变数量的参数。在这个特定的项目“args-kwargs3”中,开发者可能是在探讨如何在不同的场景下有效地利用这两个特性,并且...

Global site tag (gtag.js) - Google Analytics