python def fun,Python中func函数

  python def fun,Python中func函数

  原标题:Python的函数参数详解

  序

  Python中函数的参数可以分为两类:形参和实参~

  Def func(x,y): # x,y是形参

  打印(x,y)

  Func(2,3) # 2,3是实际参数。

  -形式参数

  参数(比如上面的x,y)只在定义的函数中有效。函数调用完成后,参数变量就不能再用了。当一个函数被调用时,函数中的参数将被分配内存和赋值;当函数调用结束时,分配的内存空间也被释放~

  -实际参数

  也就是在调用一个函数时,将某个值(必须是某个值)传递给该函数的参数。传递的值可以是常量、变量、表达式、函数等形式~

  在形参和实参中,可以细化为各种形参,如位置形参、缺省形参、变长形参等。有立场论元,关键词论元等。下面分别介绍~

  位参量

  顾名思义,参数是从左到右定义的。位置参数有两种:位置参数和位置参数。在上面的例子中,func函数中的x和y是位置参数,每个位置参数都必须传递一个值。调用func时,传递的2和3是位置参数,位置参数一一对应,不多不少~

  关键字参数

  参数是针对实参的,也就是实参在定义的时候是以key=value的形式定义的。

  def func(x,y,z):

  打印(x,y,z)

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

  关键字不需要像位置参数那样与形式参数一一对应,比如Z可以在前,Y可以在后。

  使用积分:

  1)调用函数时,位置参数必须在关键字参数之前~

  def func(x,y,z):

  打印(x,y,z)

  #当位置参数和关键字参数混合时。

  Func(1,z=2,y=3) #正确

  Func(x=1,z=2,3) #错误

  2)一个参数不能重复传递。

  def func(x,y,z):

  打印(x,y,z)

  Func(1,x=2,y=3,z=4) #错误,参数x重复传递值

  默认参数

  默认情况下,参数在函数定义阶段被赋给参数。

  DEF (x,y=10): # y是默认参数

  及格

  #在函数调用阶段,必须为X传值(位置参数),也可以为Y传值,也可以不传。如果不传递该值,将使用默认值10。

  函数(1) # x=1,y=10

  函数(1,2) # x=1,y=2

  默认参数使用注意事项:

  1)定义函数时,默认参数必须放在位置参数之后。

  Def func(y=10,x): #错误

  及格

  Def func(x,y=10): #正确

  及格

  2)默认参数通常定义为不可变类型,如数字、字符串、元组等。尽管语法支持可变类型的定义,但通常不建议这样做。

  3)默认参数在定义阶段只分配一次,如下例所示:

  x=10

  def func(姓名,年龄=x):

  及格

  x=20

  func(你好)

  提示:定义Tip:func函数时,age只赋值一次,即age=10。下面重新指定x=20,它不会作用于函数中的年龄参数。

  可变长度参数

  定义函数时,如果不确定调用时需要传入多少个参数,可以使用变长参数,即参数个数不固定。

  可变长度参数可以分为两类:

  1)由位置(*)定义的可变长度参数

  2)由关键字(* *)定义的可变长度参数

  -由位置定义的可变长度参数

  Def func(x,y,*args): # *args会将传入的冗余参数存储为一个元组,元组的变量名为args。

  打印(x,y)

  打印(参数)

  func(1,2,3,4,5,6) # x=1,y=2,args=(3,4,5)

  #输出结果:

  1 2

  (3, 4, 5, 6)

  提示: args=(3,4,5,6),所以 *args=*(3,4,5,6),在调用函数时,还可以使用下面的方法传递值(*用来处理位置参数,意思是反汇编下面的元组)

  Func(1,2,*(3,4,5,6)) #等价于func(1,2,3,4,5,6)

  #输出结果:#结果一致。

  1 2

  (3, 4, 5, 6)

  -由关键字定义的可变长度参数

  Deffunc (x,y,* * kwargs): # * * kwargs将把多输入参数存储为dict。

  打印(x,y)

  印刷品(夸脱)

  func(1,2,a=3,b=4,c=5) # x=1,y=2,kwargs={a: 3, b: 4, c: 5}

  #输出结果:

  1 2

  {a: 3, b: 4, c: 5}

  提示: kwargs={a: 3, b: 4, c: 5} ,所以 **kwargs=**{a: 3, b: 4, c: 5} ,在调用函数时,还可以使用以下方法

  Func (1,2,* * * { a :3, b: 4, c: 5}) #等价于func(1,2,a=3,b=4,c=5)

  #输出结果:#输出结果一致。

  1 2

  {a: 3, b: 4, c: 5}

  接收任意长度和形式的参数的函数。

  def func(*args,**kwargs):

  及格

  呼叫方法:

  func(1,2,3) #参数被*接受,转换成元组,保存在args中。

  Func(1,x=1,y=2) # 1与上面一致,x=1,y=2被* *接受,转换成字典形式保存在kwargs中。

  #如前所述,位置实参和关键字实参混合使用时,需要注意的是关键字实参一定要放在位置实参之后~

  命名关键字参数

  定义函数时,*符号后的参数是命名的关键字参数。调用时,命名关键字参数必须传值,而且必须以关键字的形式传值,命名关键字不常用~

  Def func(*,name,age): # name和age是命名关键字参数。

  打印(姓名)

  打印(年龄)

  Func(name=abc ,age=2) # name和age必须作为关键字传递。

  使用命名关键字参数的示例。如前所述,默认参数必须放在位置参数之后。在下例的函数定义中,name和age都是命名关键字参数(既不是默认参数也不是位置参数),name是命名关键字参数的默认值,所以下例的函数定义没有问题~

  def func(*,name=kitty ,age):

  打印(姓名)

  打印(年龄)

  func(年龄=2)

  ...返回搜狐查看更多。

  责任编辑:

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: