Python语言学习函数(参数,lamdba和函数属性)

  

  ,函数的参数是参数暴露给外部的接口,向函数传递参数,可以控制函数的流程,函数可以0个、1个或多个参数,在Python中向函数传参,使用的是赋值方式。   

  

  一、传递参数   

  

  参数是通过赋值来传递的,传递参数的特点是:   

  

  参数的传递是通过自动把对象赋值给函数的本地变量名来实现的,   

  

  在函数内部的变量名的赋值不会影响调用者,在函数运行时,在函数头部的参数名是一个新的,本地的变量名,这个变量名的作用域是在函数的本地作用域内。   

  

  改变函数的可变对象参数的值,会修改原始对象的值。   

  

  当通过赋值方式,把可变对象的引用传递给函数时,在函数内部对参数进行修改,在函数外部可以看到修改。   

  

  例如,列表是一个可变对象,当把列表一个传递给换函数时,函数向列表末尾添加一个字符,当函数调用结束时,列表末尾被修改。   

  

  在在在def变换器(x):   

  

  …x.append(& # 39;一个# 39;)   

  

  …   

  

  在在在=(1、2、3)   

  

  在在在变换器(a)   

  

  在在在一个   

  

  (1、2、3,& # 39;一个# 39;】   

  

  这是由于可变对象是通过指针进行传递的,当把列表的引用传递给参数时,函数直接在原处修改对象。   

  

  也可以通过向参数传递拷贝的方式,使得函数无法修改原始的对象。   

  

  变换器([:])   

  

  变换器(a.copy ())   

  

  二、参数匹配模型   

  

  不管使用何种参数的匹配模型,参数总是通过赋值进行传递的。   

  

  在默认情况下,参数是通过其位置进行匹配的,从左向右,而且必须精确地传递和函数头部参数名一样多的参数。还能够通过参数名匹配,默认参数名,以及对于额外参数的容器来进行传参。   

  

  1位置匹配   

  

  一般情况下,参数是通过位置从左至右进行匹配,把参数传递给函数头部的参数名称。   

  

  例如,定义函数函数,包含三个参数,那么必须使用三个参数传值进行调用:   

  

  def func (a, b, c):   

  

  调用的格式是,按照顺序把值写在括号中,Python按照位置匹配参数,把1赋值给一个,把2赋值给b,把3赋值给c:   

  

  func (1、2、3)   

  

  2,关键字匹配   

  

  调用者使用arg_name=价值的方式,通过在调用时使用参数的变量名进行匹配。   

  

  例如,定义参数函数,包含三个参数,那么必须使用三个参数传值进行调用:   

  

  def func (x, y, z):   

  

  使用关键字调用的格式是:按照arg=命名的方式进行匹配,可以不按照位置:   

  

  func (y=2, x=1, z=3)   

  

  在调用函数时,Python按照参数名进行匹配,把2传递给参数y,把1传递给参数x,把3传递给参数z。   

  

  也可以混合使用位置匹配和关键字匹配,例如,下面的函数调用:   

  

  func (z=3, y=2)   

  

  基于位置的匹配参数,首先按照从左至右的顺序匹配前面的参数,之后,再按照基于变量名进行关键字匹配。   

  

  3,默认参数   

  

  在定义函数时,可以为函数的参数赋值,这就是参数的默认值。当没有为该参数传值时,参数值使用默认值。   

  

  例如,定义一个函数,包含三个参数,x, y和z,其中参数z有默认值1:   

  

  def func (x, y, z=1):   

  

  当调用这个函数,必须为参数x和y传值,无论是通过位置匹配还是关键字匹配来实现都可以。然而,参数z的传值是可选的。如果不为z传值,那么z使用默认值;如果为z传值,那么z使用传递的值。   

  

  func (2、3)   

  

  4,可变长参数列表   

  

  可变参数用于收集任意多个基于位置或关键字的参数,在函数定义时,如果参数名前带一个*号,那么该参数收集的是基于位置的传值,如果参数名前带两个*号(* *参数),那么该参数收集的是基于关键字(arg=值)的传值。   

  

  def func (* args)   

Python语言学习函数(参数,lamdba和函数属性)