python 基础——*args和**kwargs
*args表示任何多个无名参数,它是一个tuple;**kwargs表示关键字参数,它是一个dict。
def func(one, *args, **kwargs):
print type(one)
print type(args)
print type(kwargs)
print one
print args
print kwargs func('hello', 1, 2, name='Bob', age='')
func(1, 1, 2, name='Bob', age='')
#输出
'''
<type 'str'>
<type 'tuple'>
<type 'dict'>
hello
(1, 2)
{'age': '10', 'name': 'Bob'}
<type 'int'>
<type 'tuple'>
<type 'dict'>
1
(1, 2)
{'age': '10', 'name': 'Bob'}
'''
注意:同时使用*args和**kwargs时,必须普通参数在最前面,*args参数列要在**kwargs前,像foo(a=1, b='2', c=3, a', 1, None, )这样调用的话,会提示语法错误“SyntaxError: non-keyword arg after keyword arg”
def func(*args, one, **kwargs):
print type(one)
print type(args)
print type(kwargs)
print one
print args
print kwargs #输出
'''
语法错误!
File "<string>", line 1
def func(*args, one, **kwargs):
^
SyntaxError: invalid syntax '''
借助 **kwargs 的特性,可以用此来创建字典
def kw_dict(**kwargs):
return kwargs
print kw_dict(a=1,b=2,c=3)
#输出
'''
{'a': 1, 'c': 3, 'b': 2}
'''
python 基础——*args和**kwargs的更多相关文章
- Python基础-*args和**kwargs魔法变量
在学习Python时,总会遇到*args和**kwargs这两个魔法变量,那么它们到底是什么? 首先,并不是必须写成*args和**kwargs.只有变量前面的*(星号)才是必须的,你也可以写成*va ...
- python的*args和**kwargs基础用法
*args表示任何多个无名参数,它是一个tuple **kwargs:传入的字典,就如:a=1,传入键值,默认就传入到**kwargs中,如下面代码: class FOO: def __init__( ...
- python 中*args 和 **kwargs
简单的可以理解为python 中给函数传递的可变参数,args 是 列表的形式.kwargs 是 key,value的形式,也就是python 中的字典. *args 必须出现在**kwargs 的前 ...
- python 的 *args 和 **kwargs
Python支持可变参数,通过*args和**kwargs来指定,示例如下: def test_kwargs(first, *args, **kwargs): print 'Required a ...
- Python中*args 和**kwargs的用法
当函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kwargs有key值.还是直接来代码吧,废话少说[python] def fun_var_args(far ...
- 学习python的*args和 **kwargs
*args表示任何多个无名参数,它是一个tuple(元组):**kwargs表示关键字参数,它是一个dict(字典) def foo(*args, **kwargs): print 'args = ' ...
- Python的*args与**kwargs
当Python的函数的参数不确定时,可以使用*args与**kwargs来指代不定数量的参数. 两者的区别是,*args是个tuple(元组),而**kwargs是个dict(字典). 先通过代码来验 ...
- python 中 *args 和 **kwargs 的区别
在 python 中,*args 和 **kwargs 都代表 1个 或 多个 参数的意思.*args 传入tuple 类型的无名参数,而 **kwargs 传入的参数是 dict 类型.下文举例说明 ...
- Python : *args和**kwargs是什么东东呢?
def foo(*args, **kwargs): print 'args = ', args print 'kwargs = ', kwargs print '------------------- ...
随机推荐
- as3 中trace() 函数对效率的影响
进行页游开发的过程中,很多开发者都有一个习惯,在数据输出中添加trace()函数来跟踪数值 - 不进行条件编译,发布的时候也不删除.实际上大量的trace函数会降低程序的效率,我们可以用一个简单的例子 ...
- http和数据库sql分析与窃听技术
用tunnel,tunnel是一种技术称谓,将其放到真正的服务器和客户端之间.调试阶段可以使用webcream运行tomcat作为模拟的真正的服务器. 具体:用apache axis及其项目中的工具t ...
- cloudera hbase集群简单思路
文章copy link:http://cloudera.iteye.com/blog/889468 链接所有者保留所有权! http://www.csdn.net/article/2013-05-10 ...
- 1分钟内检查Linux服务器性能的10条命令
如果你的Linux服务器突然负载暴增,告警短信快发爆你的手机,如何在最短时间内找出Linux性能问题所在?Netflix性能工程团队的Brendan Gregg写下了这篇博文,来看他们是怎样通过十条命 ...
- Hibernate之QBC查询与本地SQL查询
1. QBC查询: QBC 查询就是通过使用Hibernate提供的QueryByCriteria API 来查询对象,这种API封装了SQL语句的动态拼装,对查询提供了更加面向对象的功能接口 ...
- sql server 2014内存表
内存数据库,指的是将数据库的数据放在内存中直接操作.相对于存放在磁盘上,内存的数据读写速度要高出很多,故可以提高应用的性能.微软的SQL Server 2014已于2014年4月1日正式发布,SQL ...
- HDU 3308 LCIS (线段树区间合并)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3308 题目很好懂,就是单点更新,然后求区间的最长上升子序列. 线段树区间合并问题,注意合并的条件是a[ ...
- SQLServer2008设置开启INTERNET远程连接
SQL Server 2008默认是不允许远程连接的,sa帐户默认禁用的,如果想要在本地用SSMS连接远程服务器上的SQL Server 2008,需要做两个部分的配置: 使用sa账户登录SQL Se ...
- SSL协议与数字证书原理
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...
- ADO.NET 快速入门(十五):ADO 应用转换为 ADO.NET
这是一个已经移植到 .NET 的 ADO 应用的例子.也演示了单向.只读.快速 DataReader 的使用.它演示如何使用 DataView 类从 DataSet 获取一个 Table 和 操作一个 ...