Python的多类型传值和冗余参数
2024-10-14 17:07:42
多类型传值(向函数中传递元组和字典)
1 向函数中传递元组
def func(x,y):
print x+y
调用这个函数的时候,我们只需要传入两个变量就可以了,但是比如我有一个元组t = (1,2),我想把t的值传入func,那么func(t)是不可以的,因为默认情况下它把t当做1个变量了,那么这种情况下,我们就需要使用*t来表示把t的内存地址中的数据传入,这时就可以了。但要注意,元组t中元素的个数要小于等于函数中定义的形参个数才可以,当函数需要3个形参的时候,此时t中只有两个元素,那么传递是可以的,但是要手动再指定一个参数才可以正常调用:
def func(x,y,z):
print x+y+z
t = (1,2)
func(1,*t)
这样传递才可以,并且*t的这种写法,只能放在最右边(命名参数的后面)。
也可以直接 func(*(1,2,3))这样来传值
2 向函数中传递字典
如果传递的是字典的话,那么就需要如下格式了
dic = {'x':2,'y':3,'z':10}
func(**dic)
这样才可以。但是字典的key必须和函数的的形参相同
3 冗余参数
处理多余参数(接收多余参数)
def func(x,*args,**kwargs):
定义了x命名参数,和两个多类型参数,作为冗余参数
默认情况下至少传递一个命名参数,如果传的参数多的话,则存到args中(以元组的形式),如果传递的是字典,或者变量的默认(例x=1)值等(以字典的形式存储)
def func(x,*args,**kwargs):
print x
print args
print kwargs
func(1,2,a=123)
1
(2,)
{'a': 123}
最新文章
- Java教程-Java 程序员们值得一看的好书推荐
- 百度地图开发的学习(一)——配置环境&;基础地图
- Java NIO 开篇
- hdu 2715 Herd Sums
- AsyncTask的用法总结
- ABC: Always Be Coding
- Quartz学习——Quartz大致介绍(一)
- Java导出防止小数显示不全工具类
- istio收集Metrics和日志信息
- 弹窗滑动,造成body跟随滑动解决办法
- postgres 11 单实例最大支持多少个database?
- postgresql 空间函数 随笔
- JBoss应用服务器清理缓存
- PHP——判断数组中是否有重复值并找出重复值
- -bash: 未预期的符号 `(' 附近有语法错误
- jdk8系列三、jdk8之stream原理及流创建、排序、转换等处理
- SQLite中sqlite3_column_value()的返回值
- svn导入项目和部署方面的相关问题
- 海南小地图(echart)
- Linux SSH基于密钥交换的自动登陆原理简介及配置说明