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

先来看一个例子:

复制代码 代码如下:

>>> 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”。如同所示:

时间: 2024-11-02 10:15:26

用实例说明python的*args和**kwargs用法_python的相关文章

通过代码实例展示Python中列表生成式的用法_python

1 平方列表 如果你想创建一个包含1到10的平方的列表,你可以这样做: squares = [] for x in range(10): squares.append(x**2)   这是一个简单的例子,但是使用列表生成式可以更简洁地创建这个列表. squares = [x**2 for x in range(10)] 这个最简单的列表生成式由方括号开始,方括号内部先是一个表达式,其后跟着一个for语句.列表生成式总是返回一个列表. 2 整除3的数字列表 通常,你可能这样写: numbers =

【Python】*args 和 **kwargs的用法

一 简介 *args 和 **kwargs 主要用于函数定义. 当我们需要定义的函数的传入参数个数不确定时,可以使用*args 和 **kwargs 代替不确定的参数个数.其实并不是必须写成*args 和**kwargs. 只有变量前面的 *(星号)才是必须的. 我们可以写成*var和**vars. 而写成*args 和**kwargs只是一个通俗的命名约定. 二 使用2.1 *args 当函数的参数个数不确定且不需要指定参数名称时,*args的格式是常规的参数 val1[,val2,val3.

python中ConfigParse模块的用法_python

本文实例讲述了python中ConfigParse模块的用法,分享给大家供大家参考.具体方法如下: 写配置一般用ConfigParse.RawConfigParse类 读配置用ConfigParse.ConfigParse类 代码如下: 写配置文件: import ConfigParser import time config = ConfigParser.RawConfigParser() task = {} task["id"] = 1 task["package&quo

详解Python中with语句的用法_python

引言 with 语句是从 Python 2.5 开始引入的一种与异常处理相关的功能(2.5 版本中要通过 from __future__ import with_statement 导入后才可以使用),从 2.6 版本开始缺省可用(参考 What's new in Python 2.6? 中 with 语句相关部分介绍).with 语句适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的"清理"操作,释放资源,比如文件使用后自动关闭.线程中锁的自动获取和释放等. 术

用实例分析Python中method的参数传递过程_python

什么是method? function就是可以通过名字可以调用的一段代码,我们可以传参数进去,得到返回值.所有的参数都是明确的传递过去的. method是function与对象的结合.我们调用一个方法的时候,有些参数是隐含的传递过去的.下文会详细介绍.instancemethod  In [5]: class Human(object): ...: def __init__(self, weight): ...: self.weight = weight ...: def get_weight(

Python Tkinter基础控件用法_python

本文实例展示了Python Tkinter基础控件的用法,分享给大家供大家参考之用.具体方法如下: # -*- coding: utf-8 -*- from Tkinter import * def btn_click(): b2['text'] = 'clicked' evalue = e.get() print 'btn Click and Entry value is %s' % evalue def btn_click_bind(event): print 'enter b2' def

举例讲解Python中装饰器的用法_python

由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数. >>> def now(): ... print '2013-12-25' ... >>> f = now >>> f() 2013-12-25 函数对象有一个__name__属性,可以拿到函数的名字: >>> now.__name__ 'now' >>> f.__name__ 'now' 现在,假设我们要增强now()函数的功能,比

详解Python中的正则表达式的用法_python

如果直接在命令行中利用input和raw_input读入一个文件来处理,并且想要采用直接将文件拖入命令行来处理的方式, input方法可以直接处理,而如果要采用raw_input的方法的话,读入文件地址会带有引号,还需要自己手动去掉引号才能处理文件. 在ipython中测试一下代码:(读入一个图片文件的地址字符串) a = input("input a:\n") print "the input method: ",a b = raw_input("inp

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

复制代码 代码如下: #coding=utf8__author__ = 'Administrator' # 当函数的参数不确定时,可以使用*args和**kwargs.*args没有key值,**kwargs有key值 def fun_var_args(farg, *args):    print 'args:', farg    for value in args:        print 'another arg:',value # *args可以当作可容纳多个变量组成的list或tupl