python中*args **kw到底是什么意思?
2016-08-08 16:18
218 查看
*args是非关键字参数,用于元组,**kw是关键字参数,用于字典
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”。
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”。
相关文章推荐
- Linux学习笔记-----挂载到底是什么意思???本质是什么???
- 我第一次把一个程序分成多个源文件, 我不知道该把什么放到.c 文件, 把什么放到.h 文件。(“.h” 到底是什么意思?)
- C#序列化和反序列化到底是什么意思
- 交叉编译: --host --build --target到底什么意思?
- 金华邀请赛 G - Necklace 限制polya 这两份代码到底什么意思?
- 【转载】VGA/QVGA到底是什么意思?
- IP、子网掩码、网关、DNS、DHCP到底都是什么意思
- SQL Server 中的 NOLOCK 到底是什么意思?
- xslt中的*匹配符到底是什么意思?
- 线程安全到底是什么意思?
- “人不为己,天诛地灭”到底是什么意思?
- swift 2.0 ? ! 到底是什么意思
- #ifndef到底什么意思?
- class属性中间存在空格,到底是什么意思呢?!
- 写了那么长时间的程序,到底\r\n(回车)是什么意思?
- 自定义标签TLD文件中,rtexprvalue属性到底什么意思
- #ifdef __cplusplus 到底是什么意思?
- “SIOCADDRT: Network is unreachable”不可达到底指的什么意思
- 网络带宽中的Kbps和KB/s到底是什么意思?
- java中的import static到底是什么意思