Python学习笔记——*args **kwargs 理解
2018-02-23 14:25
295 查看
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:(表示的就是将实参中按照位置传值,多出来的值都给args,且以元祖的方式呈现)
def foo(x,*args):
print(x)
print(args)
foo(1,2,3,4,5)#其中的2,3,4,5都给了args执行结果是:
print(x)
print(kwargs)
foo(1,y=1,a=2,b=3,c=4)#将y=1,a=2,b=3,c=4以字典的方式给了kwargs执行结果是:
相关文章推荐
- python中*args 和 **kwargs 的用法学习笔记
- [Python学习笔记-004] 可变参数*args和**kwargs
- Python学习笔记-tips: 什么是*args和**kwargs?
- python学习笔记:*args和**kwargs使用原理?
- Python学习笔记(3): 什么是*args和**kwargs?
- 【python学习笔记】Python中*args 和**kwargs的用法
- python 学习笔记-面向对象的理解
- 理解 Python 中的可变参数 *args 和 **kwargs:
- 理解 Python 中的 *args 和 **kwargs
- Python学习之*args和**kwargs
- 理解 Python 中的 *args 和 **kwargs
- python学习:装饰器,*args **kwargs
- 理解 Python 中的 *args 和 **kwargs
- Python学习笔记 --- 深入理解字符串
- Python学习笔记 赋值原理理解
- Python 学习入门(17)—— args, kwargs
- Python 学习入门(17)—— args, kwargs
- Python学习笔记 --- 理解 if '__name__' == '__name__'
- python笔记--*args 和 **kwargs
- python学习笔记5.1-理解模块和包