多类型传值(向函数中传递元组和字典)

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}
 

最新文章

  1. Java教程-Java 程序员们值得一看的好书推荐
  2. 百度地图开发的学习(一)——配置环境&基础地图
  3. Java NIO 开篇
  4. hdu 2715 Herd Sums
  5. AsyncTask的用法总结
  6. ABC: Always Be Coding
  7. Quartz学习——Quartz大致介绍(一)
  8. Java导出防止小数显示不全工具类
  9. istio收集Metrics和日志信息
  10. 弹窗滑动,造成body跟随滑动解决办法
  11. postgres 11 单实例最大支持多少个database?
  12. postgresql 空间函数 随笔
  13. JBoss应用服务器清理缓存
  14. PHP——判断数组中是否有重复值并找出重复值
  15. -bash: 未预期的符号 `(' 附近有语法错误
  16. jdk8系列三、jdk8之stream原理及流创建、排序、转换等处理
  17. SQLite中sqlite3_column_value()的返回值
  18. svn导入项目和部署方面的相关问题
  19. 海南小地图(echart)
  20. Linux SSH基于密钥交换的自动登陆原理简介及配置说明

热门文章

  1. ThinkphpCMF笔记
  2. SB中设置UITextField 无边框,真机上输入汉字聚焦时,文字 下沉
  3. Django基础,Day8 - 管理后台定制显示
  4. 淘宝分布式文件存储系统:TFS
  5. 制造高CPU使用率的简单方法
  6. C# 深入浅出 异步(八)
  7. mysql数据库史上最详细起步教程(1)
  8. VB.NET操作Excel
  9. 【河北省队互测】 gcd BZOJ 2818
  10. 读一篇Javascript问题贴的收获