首页 > 编程语言 > 详细

Python 函数动态参数

时间:2016-05-01 11:03:25      阅读:347      评论:0      收藏:0      [点我收藏+]
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默认认为传到了第一个*号的形参那里,第二个*号不会接收参数。通过第二种方式来传递参数,才能将匹配的参数传给对应的形参。

  

 

 



Python 函数动态参数

原文:http://www.cnblogs.com/python-study/p/5450113.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!