欢迎你来到站长在线的站长学堂学习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()函数
- meta|陈根:Meta或将发布新专利,为元宇宙助力
- meta|一个24小时就会自毁的网站,在网友的接力下存活了两年
- Oculus|Meta旗下虚拟现实公司Oculus遭反垄断调查
- meta|阿里云到底有多强大?一起来盘点一下它骄人的战绩
- Python|2022年空调业三雄争霸, 战火在线上线下全面点燃
- meta|运用好Facebook组群可以带来哪些好处呢?
- 创业|中国各种在线支付支付金额统计表:微信支付居然比支付宝少太多!
- vivo x70|超值得入手的旗舰!vivo X70 Pro+审美在线,综合实力出众
- F被指收集 4400 万用户数据,Facebook 母公司 Meta 面临 32 亿美元索赔
- Meta Quest|旨在提供更佳Quest体验:Valve发布SteamVR Beta 1.21.5