Python 函数动态参数
2016-05-01 10:17
447 查看
def show (*arg): print (arg,type(arg)) show([11,22],[33]) 结果:([11, 22], [33]) <class 'tuple'> 结论:一个*号传递的参数默认定义为元祖类型 def show (**arg): print (arg,type(arg)) show(k1='v1',k2='v2',k3='v3') 结果:{'k1': 'v1', 'k3': 'v3', 'k2': 'v2'} <class 'dict'>定义 结论:两个**号传递的参数默认定义为字典类型
def show (*arg,**kwargs): print (arg,type(arg)) print (kwargs,type(kwargs)) show([11,22,33],[44],['a','b'],k1='v1',k2='v2') 结果:
([11, 22, 33], [44], ['a', 'b']) <class 'tuple'>
{'k2': 'v2', 'k1': 'v1'} <class 'dict'> 结论:同时传递两个带*号的参数,在形参定义里,第一个形参只能是带一个*号,第二个形参只能是带两个*号,同时在参数传递的时候,第一个参数只能是普通的定义,第二个参数是字典的定义
def show (*arg,**kwargs): print (arg,type(arg)) print (kwargs,type(kwargs)) #show([11,22,33],[44],['a','b'],k1='v1',k2='v2') li = [[11,22,33],[44],['a','b']] di = {'k1':'v1','k2':'v2'} show (li,di) show(*li,**di) 结果:
([[11, 22, 33], [44], ['a', 'b']], {'k1': 'v1', 'k2': 'v2'}) <class 'tuple'>
{} <class 'dict'>
([11, 22, 33], [44], ['a', 'b']) <class 'tuple'>
{'k1': 'v1', 'k2': 'v2'} <class 'dict'> 结论:通过第一种方式来传参数,python默认认为传到了第一个*号的形参那里,第二个*号不会接收参数。通过第二种方式来传递参数,才能将匹配的参数传给对应的形参。 动态参数的应用
s1 = '{0} is {1}' result = s1.format('alex','handsome') print(result) 结果:alex is handsome
s1 = '{0} is {1}' li = ['alex','handsome'] result = s1.format(*li) print(result)
结果:alex is handsome
s1 = "{name} is {face}" result = s1.format(name='alex',face='handsome') print (result)
结果:alex is handsome
s1 = "{name} is {face}" dic = {'name':'alex','face':'handsome'} result = s1.format(**dic) print (result)
结果:alex is handsome
相关文章推荐
- python 邮件发送
- python while循环和for循环
- python queue 的put的暂停当前线程 国内大部分技术文章翻译都翻译错的
- python sklearn 分类算法简单调用
- Python学习ide安装
- python中string的方法
- python爬虫之Scrapy 使用代理配置
- [Python]dict,set
- python错误
- 在 Python 3.4 上安装 OpenCV
- Python学习笔记15
- Python生成器
- 配置vim Python IDE 开发环境
- 配置vim Python IDE 开发环境
- python数据类型之dict
- Python写个简单的字符画转换程序
- [Python]List,Tuple,循环
- [Python]整数和浮点数,布尔类型
- MOOC的Python笔记(五)文件操作
- 从Theano到Lasagne:基于Python的深度学习的框架和库