python设置参数的默认值,python函数定义的时候默认参数放在哪

  python设置参数的默认值,python函数定义的时候默认参数放在哪

  在某些情况下,程序在定义函数时需要为一个或多个参数指定默认值,这样在调用函数时,可以省略为参数传入的参数值,而直接使用参数的默认值。

  为形参指定默认值的语法格式如下:

  参数名=默认值从上面的语法格式可以看出,参数的默认值紧跟在参数之后,中间用英文“=”隔开。

  例如,以下程序为名称和消息参数指定默认值:

  #为两个参数指定默认值

  DEF _ HI (name=孙悟空,message=欢迎来到C语言中文网):

  打印(姓名,,你好)

  打印(消息是:,消息)

  #使用所有默认参数

  say_hi()

  #只有消息参数使用默认值

  Say_hi(白)

  #不要对两个参数都使用默认值

  Say_hi(白,欢迎来到Python )

  #只有name参数使用默认值。

  Say_hi(message= Welcome to Python )在上面的程序中,当定义say _ hi()函数时,为name和message参数指定了默认值。因此,在程序中第一次调用say _ hi()函数时,没有为name和message参数指定参数值。此时,名称和消息参数将使用它们的默认值。

  当程序第二次调用say_hi()函数时,它为name参数指定参数值(使用position参数)。此时,消息参数将使用默认值。

  当程序第三次调用say_hi()函数时,它为name和message参数指定了参数值(使用位置参数),因此这两个参数使用开发人员传入的参数值。

  当程序第四次调用say_hi()函数时,对于message参数只传入参数值(使用关键字参数),此时将使用name参数的默认值。

  运行上面的程序,您可以看到以下输出结果:

  你好,孙悟空。

  留言:欢迎来到C语言中文网。

  你好,白。

  留言:欢迎来到C语言中文网。

  你好,白。

  留言:欢迎学习Python

  你好,孙悟空。

  是的:欢迎使用Python。从上面的程序可以看出,如果只传入一个position参数,系统会将参数值传递给name参数,因为它在第一位。因此,我们不能像下面这样调用say_hi()函数:

  Say_hi (Welcome to Python )上面调用时传入的字符串“Welcome to Python”将被传递给name参数而不是message参数。

  也不能像下面这样调用say_hi()函数:

  Say_hi(name=白顾靖,欢迎使用Python )因为Python规定关键字参数必须跟在位置参数后面。因此,提示错误:位置参数跟在关键字参数后面。

  那么,我们是否可以简单地互换上述两个参数呢?

  #say_hi (Welcome to Python ,name= Bai )上面的调用还是不对的,因为第一个字符串没有指定关键字参数,所以使用location参数传入参数值,第二个参数使用keyword参数再次传入name参数的参数值,也就是说两个参数值实际上都传入了name参数,程序为name参数传入了多个参数值。因此,提示是错误的:say hi()获得了参数“name”的多个值。

  将函数调用更改为以下两种形式是正确的:

  say_hi(

  quot;白骨精",message="欢迎学习Python")

  say_hi(name="白骨精",message="欢迎学习Python")上面第一行代码先使用位置参数为 name 参数传入参数值,再使用关键字参数为 message 参数传入参数值;第二行代码中的 name、message 参数都使用关键字参数传入参数值。

  由于 Python 要求在调用函数时关键字参数必须位于位置参数的后面,因此在定义函数时指定了默认值的参数(关键字参数)必须在没有默认值的参数之后。例如如下代码:

  

#定义一个打印三角形的函数,有默认值的参数必须放在后面

  defprintTriangle(char,height=5):

  foriinrange(1,height+1):

  #先打印一排空格

  forjinrange(height-i):

  print('',end='')

  #再打印一排特殊字符

  forjinrange(2*i-1):

  print(char,end='')

  print()

  printTriangle('@',6)

  printTriangle('#',height=7)

  printTriangle(char='*')

上面程序定义了二个 printTriangle() 函数,该函数的第一个 char 参数没有默认值,第二个 height 参数有默认值。

  上面程序中第一次调用 printTriangle() 时,程序使用两个位置参数分别为 char、height 传入参数值,这当然是允许的;第二次调用 printTriangle() 时,第一个参数使用位置参数,那么该参数值将传给 char 参数,第二个参数使用关键字参数为 height 参数传入参数值,这也是允许的;第三次调用 printTriangle() 时,只使用关键字参数为 char 参数传入参数值,此时 height 参数将使用默认值,这是符合语法的。

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

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