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

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

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

在调用函数时如果不指定某个参数 , Python 解释器会抛出异常 。 为了解决这个问题 , Python 允许为参数设置默认值 。
1、默认参数的概念
默认参数也叫参数的默认值 , 即在定义函数时 , 直接指定形式参数的默认值 。 这样 , 当没有传入参数时 , 则直接使用定义函数时设置的默认值 。
定义带有默认值参数的函数的语法格式如下:
def functionname(...[parameter1 = defaultvalue1
):
[functionbody

其中 , 相关参数说明如下:
functionname:函数名称 , 在调用函数时使用;
parameter1 = defaultvalue1:可选参数 , 用于指定向函数中传递的参数 , 并且为该参数设置默认值为defaultvalue1;
functionbody:可选参数 , 用于指定函数体 , 即该函数被调用后 , 要执行的功能代码 。
当然 , 上面的内容也可以使用中文说明:
def 函数名(... , 形参名 , 形参名=默认值):
代码块
站长在线特别提醒:在使用此格式定义函数时 , 指定有默认值的形式参数必须在所有没默认值参数的最后 , 否则会产生语法错误 。
2、默认参数的示例
例如:定义一个同学的语文 , 数学 , 英语的成绩 , 并且输出他的成绩 ,
#可写函数说明
def chengji(shuxue=98yingyu=90yuwen=92):
\"打印任何传入的字符串\"
print (\"语文: \"yuwen)
print (\"数学: \"shuxue)
print (\"英语: \"yingyu)
return
#调用chengji函数
chengji(shuxue=100yingyu=100yuwen=100)
print(\"----------\")
chengji(shuxue=80yingyu=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()函数