Python可变长参数*args **kwargs

来自linux中国网wiki
跳到导航 跳到搜索

python可变长参数*args **kwargs

在Python中,有两种变长参数,分别是元组(非关键字参数)和字典(关键字参数),
其参数以一个*开头表示任意长度的元组[tuple],可以接收连续一串参数,参数以两个*开头表示一个字典[dict],即”key:value”,接受连续任意多个参数。

evan@evanpc:~/test$ cat  arg.py 
def variable(*args,**kwargs):
    print args
    print kwargs
    print "\n"

variable(1,2,3,4,5,"www","i-it","info")

###执行输出tuple###
evan@evanpc:~/test$ python arg.py
(1, 2, 3, 4, 5, 'www', 'i-it', 'info')
{}

###执行输出dict###
variable(www=1,it=2,info=3)
evan@evanpc:~/test$ python arg.py
()
{'info': 3, 'www': 1, 'it': 2}

##一起来##
variable(1,2,3,www=1,it=2,info=3)
evan@evanpc:~/test$ python arg.py
(1, 2, 3)
{'info': 3, 'www': 1, 'it': 2}

呵呵,知道*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)即可创建一个字典了

参考

http://blog.csdn.net/woshixiongjin/article/details/24406925

http://www.cnblogs.com/kennyhr/articles/3534006.html

python的位置参数、默认参数、关键字参数、可变参数区别