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 '------------------- ...
随机推荐
- C# 6.0 的新特性
1. 自动的属性初始化器Auto Property initialzier 之前的方式: public class AutoPropertyBeforeCsharp6 { private string ...
- C++问题-Qt Visual Studio Add-in
问题现象:用VS打开其他人的项目提示如下:Qt Visual Studio Add-in...中间全TMD的英文,我就省略...QT版本不对,需要修改QT版本. 问题原因:占时不明,因为我是开发Del ...
- thymeleaf中的Literals
Literals即为文字 一.Text literals:文本文字 文本文字只是字符串指定的单引号之间.他们可以包含任何字符,但你应避免任何单引号里面\ ' <p> Now you are ...
- UVaLive 7361 Immortal Porpoises (矩阵快速幂)
题意:求Fibonacci的第 n 项. 析:矩阵快速幂,如果不懂请看http://www.cnblogs.com/dwtfukgv/articles/5595078.html 是不是很好懂呢. 代码 ...
- Lua学习笔记(三):函数和闭包
函数 lua的函数以function关键字开始,后跟函数名称和参数,最后以end结束,我们看一个简单的函数定义: function foo() --do something end function ...
- Oracle-11g-R2 于 Linux 上的 RAC 卸载
安装环境: SuSE Linux Enterprise Server 11 SP3 Oracle 11g 11.2.0.3 卸载步骤: 1.卸载 Database 软件(oracle,第一节点) ...
- "file:///" file 协议
[问题] 在WLW中拖入本地图片文件,然后调试过程中,选中对应图片,看到获得的对应的html源码中,图片地址是这样的: href="file:///C:/Users/CLi/AppData/ ...
- linux 下httpd服务开机启动
分类: 网站搭建2011-01-07 05:52 1164人阅读 评论(0) 收藏 举报 linuxapache 我的apache安装目录在 /usr/local/apache 有2种方法可以设置开机 ...
- AndroidCharts为折线图表添加y坐标
AndroidCharts 是一款轻量级的图表显示控件,对比起Android-Charts和AChartEngine来说简单和活泼了很多,适合数据展示不需要太过详细专业的场合,它支持简单且带动画的折线 ...
- Spring强制使用CGLIB代理事务
Spring强制使用CGLIB代理事务 springaopjdkreferenceclasspath Spring1.2: 将事务代理工厂[TransactionProxyFactoryBean] ...