Python 中的默认值是什么?
Python 语言对函数参数的语法和默认值表示方式有所不同。
默认值是指在函数调用时未给出参数值时,函数参数将采用该值。 默认值是通过使用形如关键字名称=值的赋值 (=) 运算符来分配的。
更多Python相关文章,请阅读:Python 教程
示例
# 创建一个带有默认值的函数
def tutorialspoint(website, author ='XYZ', language ='Python'):
print(website, "网站文章由语言是", author,"的作者写的", language)
不使用关键字参数调用函数
示例
# 创建一个带有默认值的函数
def tutorialspoint(website, author ='XYZ', language ='Python'):
print(website, "网站文章由语言是", author,"的作者写的", language)
# 调用仅有的 1 个位置参数(website)
# 在这里,它采用了给定的默认值 author(XYZ) 和 language(Python)
tutorialspoint('教程点')
# 调用 3 个位置参数 (website, author, language)
tutorialspoint('教程点', '亚历克斯', 'Java')
# 调用 2 个位置参数 (website, author)
# 在这里,它采用了给定的默认值 language(Pyhton)
tutorialspoint('教程点', '盖尔')
# 在这里,它采用了给定的默认值 author(XYZ)
tutorialspoint('教程点', 'C++')
输出
在执行上述程序时,将生成以下输出 –
教程点网站文章由语言是 XYZ 的作者写的 Python
教程点网站文章由语言是 Alex 的作者写的 Java
教程点网站文章由语言是 Gayle 的作者写的 Python
教程点网站文章由作者是 C++ 的语言 Python
说明
- 在第一种情况下,第一个调用中只需一个必需的参数,其余参数设置为默认值。
-
在第二个函数调用中,我们将函数称为 3 个位置参数 (website, author, language) 的函数。 参数的值 author 和 standard 从默认值更改为传递的新值。
使用关键字参数调用函数
示例
# 给定默认值创建函数
def tutorialspoint(website, author ='XYZ', language ='Python'):
print(website, "作者编写了此网站文章", author,"语言为", language)
# 仅使用关键字调用1个定位参数(website)
# 在此使用了默认的作者(XYZ)和语言(Python)值
tutorialspoint(website= 'tutorialspoint')
# 使用关键字调用2个定位参数(website, language)
tutorialspoint(website= 'tutorialspoint', language = 'Java')
# 使用关键字调用2个定位参数(author, website)
# 关键字的顺序并非强制性的
# 在此使用了默认的语言(Python)值
tutorialspoint(author= 'Gayle', website= 'tutorialspoint')
输出
执行以上程序后,将产生以下输出-
tutorialspoint 作者编写了此网站文章 XYZ 语言为 Python
tutorialspoint 作者编写了此网站文章 XYZ 语言为 Java
tutorialspoint 作者编写了此网站文章 Gayle 语言为 Python
说明
- 第一个调用仅需要一个关键字参数。
-
在第二个调用中,需要一个必需参数和一个可选参数( language ),并将其默认值更改为新的传递值。
-
我们可以从第三个调用中看到, 关键字参数的 顺序 不重要/非强制性的。
无效的函数调用(会引发错误)
现在我们来看一些函数调用无效的情况,这些情况会抛出错误。
例子
# 给定默认值创建函数
def tutorialspoint(website, author ='XYZ', language ='Python'):
print(website, "作者编写了此网站文章", author,"的语言为", language)
# 没有传递参数给函数,因此会出现一个错误
tutorialspoint()
输出
执行以上程序后,将产生以下输出-
Traceback (most recent call last):
File "main.py", line 5, in <module>
tutorialspoint()
TypeError: tutorialspoint() missing 1 required positional argument: 'website'
没有传递参数给函数,因此会出现一个错误
例
# creating a function by giving default values
def tutorialspoint(website, author ='XYZ', language ='Python'):
print(website, "作者编写了此网站文章", author,"的语言为", language)
# 使用了多余的参数(定位参数和关键字参数的组合)
tutorialspoint(website='tutorialspoint', author='Nina', language ='Python','extra argument')
输出
执行以上程序后,将产生以下输出-
File "main.py", line 7
tutorialspoint(website='tutorialspoint', author='Nina', language ='Python','extra argument')
^
SyntaxError: positional argument follows keyword argument
使用了多余的参数(定位参数和关键字参数组合),因此会出现一个错误
# 通过设置默认值创建一个函数
def tutorialspoint(website, author ='XYZ', language ='Python'):
print(website, "网站文章由作者编写", author,"使用语言", language)
# 为作者设置了一个非关键字参数(Alex)
# 在关键字参数(tutorialspoint)之后。因此会发生错误
tutorialspoint(website= 'tutorialspoint', 'Alex')
输出
运行以上程序,将生成以下输出 –
File "main.py", line 6
tutorialspoint(website= 'tutorialspoint', 'Alex')
^
SyntaxError: 位置参数跟随关键字参数之后
在关键字参数之后,有一个非关键字参数(Alex)(tutorialspoint)。因此会发生错误。
示例
# 通过设置默认值创建一个函数
def tutorialspoint(website, author ='XYZ', language ='Python'):
print(website, "网站文章由作者编写", author,"使用语言", language)
# 在函数中未定义关键字(address)
# 因此引发错误
tutorialspoint(address ='Hyderabad')
输出
运行以上程序,将生成以下输出 –
Traceback (most recent call last):
File "main.py", line 6, in <module>
tutorialspoint(address ='Hyderabad')
TypeError: tutorialspoint() got an unexpected keyword argument 'address'
因为函数中未定义关键字(未知关键字参数),因此引发错误。
使用可变对象作为默认参数
必须非常小心。这是因为当控制流到达函数时,参数的默认值仅计算一次。
首先是定义,随后在后续函数调用中引用相同的值(或可变对象)。
示例
# 通过将列表元素、新列表作为参数传递创建一个函数
# 函数在将元素附加到新列表后返回新列表
def appendingElement(listElement, newList = []):
newList.append(listElement)
# 返回一个新列表
return newList
# 通过将列表元素作为参数来调用函数
# 并打印结果新列表
print(appendingElement('hello'))
print(appendingElement('tutorialspoint'))
print(appendingElement('python'))
输出
['你好']
['你好', '教程点']
['你好', '教程点', 'Python']
结论
在本文中,我们学习了Python函数中的默认值。 通过使用一些示例,我们了解了默认参数和参数。