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

    时间: 浏览:1583次  来源:站长在线 
欢迎你来到站长在线的站长学堂学习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不迷路!欢迎你对站长在线进行关注,评论,点赞,分享、转发!



本文地址:https://www.olzz.com/pythonmorencanshu.html
码字不易,打个赏呗
杨泽业感谢你的支持!

猜你喜欢

域名pythonw.cn出售

域名pythonw.cn的详细信息:Python网

2022-08-06  分类:域名出售  浏览:1431次


站长在线Python教程:Python中类定义详解

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《Python中类定义详解》。

2022-02-23  分类:Python学堂  浏览:2001次


站长在线Python教程:python中面向对象相关概述详解

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《python中面向对象相关概述详解》。本文的主要内容有:面向对象是什么、面向对象中的对象是什么、Python中的类是什么、面向对象编程的特点有哪些?

2022-02-14  分类:Python学堂  浏览:1697次


站长在线零基础Python完全自学教程23:函数的返回值、作用域和匿名函数

导读:欢迎你来到站长学堂,学习站长在线出品的在线课程《零基础 Python完全自学教程》今天给大家分享的是第23课《函数的返回值、作用域和匿名函数》。本文是一个大课程分成了下面4节小课程:Python中函数的返回值、Python函数中的局部变量、Python函数中的全局变量、Python函数中的匿名函数等内容。

2022-02-09  分类:Python学堂  浏览:1564次


站长在线Python教程:Python函数中的匿名函数详解

欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《Python函数中的匿名函数详解》。本文的主要内容有:匿名函数的定义、匿名函数的表达式、匿名函数的注意点、匿名函数的优点、匿名函数的应用举例。

2022-02-01  分类:Python学堂  浏览:1687次


站长在线Python教程精讲:在Python函数中的全局变量详解

欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《Python中的全局变量详解》。本文的主要内容有:什么是全局变量、在函数外部定义的变量是全局变量、在函数内部定义中添加global关键词后变成全局变量。

2022-01-10  分类:Python学堂  浏览:1796次


站长在线Python教程精讲:在Python函数中的局部变量详解

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《在Python函数中的局部变量详解》。本文的主要内容有:变量的作用域的概念、局部变量的概念、局部变量的举例。

2022-01-06  分类:Python学堂  浏览:1705次


Python常用英语及用法

站长在线站长,准备系统的学习Python知识,但是对我来说,英语实在是太差了,当然我知道的是,不仅仅我,很多人在学习Python的时候,也是不知道这些英语单词的意思与用法的,在这里站长在线站长就把这些英语整理出来,把英语以及中文意思、用法一起贴出来,让大家一起来学习。

2022-01-02  分类:Python学堂  浏览:1913次


站长在线Python精讲:Python中函数的返回值

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《Python中函数的返回值》。本文的主要内容有:函数的返回值的含义、函数设置返回值的作用、return语句位置与多条 return语句的总结。

2021-12-29  分类:Python学堂  浏览:1874次


站长在线零基础Python完全自学教程22:在Python中函数的参数传递

欢迎你来到站长学堂,学习站长在线出品的在线课程《零基础 Python完全自学教程》今天给大家分享的是第22课《在Python中函数的参数传递》。本文是一个大课程分成了下面5节小课程:在Python函数中理解形式参数和实际参数、在Python函数中参数传递的位置参数详解、在Python函数中的关键字参数详解、在Python函数中的默认参数详解、在Python函数中的可变参数详解。

2021-12-26  分类:Python学堂  浏览:1660次