龙空技术网

站长在线Python精讲:在Python函数中的默认参数详解

站长世界 103

前言:

今天咱们对“python输入不确定个参数”大约比较重视,看官们都想要学习一些“python输入不确定个参数”的相关内容。那么小编在网上汇集了一些有关“python输入不确定个参数””的相关文章,希望你们能喜欢,朋友们一起来学习一下吧!

欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《在Python函数中的默认参数详解》。本文的主要内容有:默认参数的概念和默认参数的示例、默认参数不能设置可变对象。

在调用函数时如果不指定某个参数,Python 解释器会抛出异常。为了解决这个问题,Python 允许为参数设置默认值。

1、默认参数的概念

默认参数也叫参数的默认值,即在定义函数时,直接指定形式参数的默认值。这样,当没有传入参数时,则直接使用定义函数时设置的默认值。

定义带有默认值参数的函数的语法格式如下:

def functionname(...,[parameter1 = defaultvalue1]):        [functionbody]

其中,相关参数说明如下:

functionname:函数名称,在调用函数时使用;

parameter1 = defaultvalue1:可选参数,用于指定向函数中传递的参数,并且为该参数设置默认值为defaultvalue1;

functionbody:可选参数,用于指定函数体,即该函数被调用后,要执行的功能代码。

当然,上面的内容也可以使用中文说明:

def 函数名(...,形参名,形参名=默认值):    代码块

站长在线特别提醒:在使用此格式定义函数时,指定有默认值的形式参数必须在所有没默认值参数的最后,否则会产生语法错误。

2、默认参数的示例

例如:定义一个同学的语文,数学,英语的成绩,并且输出他的成绩,

#可写函数说明def chengji(shuxue=98,yingyu=90,yuwen=92):   "打印任何传入的字符串"   print ("语文: ",yuwen)   print ("数学: ",shuxue)   print ("英语: ",yingyu)   return #调用chengji函数chengji(shuxue=100,yingyu=100,yuwen=100)print("----------")chengji(shuxue=80,yingyu=80)

运行结果如下:

语文:  100数学:  100英语:  100----------语文:  92数学:  80英语:  80>>> 

从上面的运行结果可以看出,我们对上面的成绩定义了两次,第一次全部定义为100分,结果显示为100分,第二次定义了两个80分的,有一个没有定义,就调用了默认参数了。

Pyhton 中,可以使用“函数名.__defaults__”查看函数的默认值参数的当前值,其返回值是一个元组。以本节中的 chengji() 函数为例,在最后一行代码后面添加如下代码:

print(chengji.__defaults__)

运行以后,结果为:

语文:  100数学:  100英语:  100----------语文:  92数学:  80英语:  80(98, 90, 92)>>> 
3、默认参数不能设置可变对象

使用可变对象作为函数参数的默认值时,多次调用可能会导致意料之外的情况。例如,编写一个名称为demo()的函数,并为其设置一个带默认值的参数,代码如下:

def demo(a=[]): # 定义函数并为参数a指定默认值    print("a的值: ",a)    a.append(1)

调用demo()函数,代码如下:

def demo(a=[]): # 定义函数并为参数a指定默认值    print("a的值: ",a)    a.append(1)demo()          # 调用demo()函数  

将显示以下结果:

a的值: []

连续两次调用demo()函数,并且都不指定实际参数,代码如下:

def demo(a=[]): # 定义函数并为参数a指定默认值    print("a的值: ",a)    a.append(1)demo()          # 调用demo()函数demo()          # 调用demo()函数 

将显示以下结果:

a的值:  []a的值:  [1]>>> 

从上面的结果看,这显然不是我们想要的结果。为了防止出现这种情况,最好使用None作为可变对象的默认值,这时还需要加上必要的检查代码。修改后的代码如下:

def demo(a=None):    if a==None:         a=[]    print("a的值: ",a)    a.append(1)demo()         demo()         

运行结果如下:

a的值:  []a的值:  []>>> 

上面的问题,就告诉我们:定义函数时,为形式参数设置默认值要牢记一点:默认参数必须指向不可变对象。

到此为止,站长在线讲解的《在Python函数中的默认参数详解》中的默认参数的概念和默认参数的示例,都讲解完毕了。有不懂的可以给我留言哦!

在下一个知识点,站长在线就来讲解《在Python函数中的可变参数》。关注站长在线,学习Python不迷路!欢迎你对站长在线进行关注,评论,点赞,分享、转发!

标签: #python输入不确定个参数