Python的多类型传值和冗余参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python的多类型传值和冗余参数相关的知识,希望对你有一定的参考价值。

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

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}
 

以上是关于Python的多类型传值和冗余参数的主要内容,如果未能解决你的问题,请参考以下文章

在Python函数中如何多类型传值与递归调用

Python 基础进阶

传值和传址

Python复习——复习4次课(12月1日)

传值和传引用

Python 函数参数引用(传值/传址)/copy/deepcopy