Python 中的默认值是什么?
Python 语言以不同的方式表示函数参数的语法和默认值。
默认值表示如果在函数调用期间未提供参数值,则函数参数将采用该值。默认值是通过使用赋值(=)运算符分配的,其形式为keywordname=value。
示例
# creating a function by giving default values def tutorialspoint(website, author ='XYZ', language ='Python'): print(website, "website article is written by the author", author,"of language", language)
不带关键字参数的函数调用
示例
# creating a function by giving default values def tutorialspoint(website, author ='XYZ', language ='Python'): print(website, "website article is written by the author", author,"of the language", language) # calling only 1 positional argument(website) # here it takes the given default values for author(XYZ) and language(Python) tutorialspoint('tutorialspoint') # calling 3 positional arguments (website, author, language) tutorialspoint('tutorialspoint', 'Alex', 'Java') # calling 2 positional arguments (website, author) # here it takes the given default value for the language(Python) tutorialspoint('tutorialspoint', 'Gayle') # here it takes the given default value for author(XYZ) tutorialspoint('tutorialspoint', 'C++')
输出
执行上述程序后,将生成以下输出 -
tutorialspoint website article is written by the author XYZ of the language Python tutorialspoint website article is written by the author Alex of the language Java tutorialspoint website article is written by the author Gayle of the language Python tutorialspoint website article is written by the author C++ of language Python
解释
在第一个示例中,第一个调用中只有一个必需参数,其余参数设置为默认值。
在第二个函数调用中,我们使用 3 个位置参数(website、author、language)调用函数。author 和 standard 参数的值从默认值更改为新的传递值。
使用关键字参数的函数调用
示例
# creating a function by giving default values def tutorialspoint(website, author ='XYZ', language ='Python'): print(website, "website article is written by the author", author,"of language", language) # calling only 1 positional argument(website) with keywords # here it takes the given default values for author(XYZ) and language(Python) tutorialspoint(website= 'tutorialspoint') # calling 2 positional arguments (website, language) with keywords tutorialspoint(website= 'tutorialspoint', language = 'Java') # calling 2 positional arguments (author, website) with keywords # the order of the keywords is not mandatory # here it takes the given default value for language(Python) tutorialspoint(author= 'Gayle', website= 'tutorialspoint')
输出
执行上述程序后,将生成以下输出 -
tutorialspoint website article is written by the author XYZ of language Python tutorialspoint website article is written by the author XYZ of language Java tutorialspoint website article is written by the author Gayle of language Python
解释
第一个调用中只有一个关键字参数是必需的。
在第二个调用中,一个参数是必需的,一个参数是可选的(language),其值从默认值更改为新的传递值。
从第三个调用中我们可以看出,关键字参数的顺序并不重要/不是强制性的。
无效的函数调用(引发错误)
现在我们来看一些引发错误的无效函数调用的情况。
示例
# creating a function by giving default values def tutorialspoint(website, author ='XYZ', language ='Python'): print(website, "website article is written by the author", author,"of language", language) # No arguments are passed to the function, hence an error occurs 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, "website article is written by the author", author,"of language", language) # There is a non-keyword argument for author(Alex) after # a keyword argument website(tutorialspoint). Hence an error occurs tutorialspoint(website= 'tutorialspoint', 'Alex')
输出
执行上述程序后,将生成以下输出 -
File "main.py", line 6 tutorialspoint(website= 'tutorialspoint', 'Alex') ^ SyntaxError: positional argument follows keyword argument
在关键字参数之后,有一个非关键字参数 author (Alex) (tutorialspoint)。因此,发生错误。
示例
# creating a function by giving default values def tutorialspoint(website, author ='XYZ', language ='Python'): print(website, "website article is written by the author", author,"of language", language) # The keyword address is not defined in the function(unknown keyword argument) # hence it raises an error 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'
因为关键字 address 在函数中未定义(未知关键字参数),所以会引发错误。
使用可变对象作为默认参数
必须非常小心地执行此操作。这样做的原因是参数的默认值仅在控制权到达函数时评估一次。
第一次,定义。在此之后,在后续的函数调用中引用相同的值(或可变对象)。
示例
# Creating a function by passing the list element, new list as arguments # the function returns a new list after appending elements to it def appendingElement(listElement, newList = []): newList.append(listElement) # returning a new list return newList # calling function by passing the list element as an argument # and printing the result new list print(appendingElement('hello')) print(appendingElement('tutorialspoint')) print(appendingElement('python'))
输出
['hello'] ['hello', 'tutorialspoint'] ['hello', 'tutorialspoint', 'python']
结论
在本文中,我们学习了 Python 函数中的默认值。我们通过一些示例了解了默认参数。
广告