全文共2911字,预计学习时长9分钟
来源:Pexels
在编程中,函数就是生命!
作为使用Python的新手——无论是编程新手,还是熟悉另一语言的人——都需要学习函数定义中的参数数目是否和想要传达的变元数目匹配。
这是基础性知识——有助于了解这个世界。
然而,接触到函数定义中的*args和**kwargs时,也会让新手刚开始就遇到心理障碍。
在Python中的代码中经常会见到这两个词 args 和 kwargs,前面通常还会加上一个或者两个星号。
别被这些语句所绊倒。其实这些并不是什么超级特殊的参数,也并不奇特,只是编程人员约定的变量名字,args 是 arguments 的缩写,表示位置参数;kwargs 是 keyword arguments 的缩写,表示关键字参数。
这其实就是 Python 中可变参数的两种形式,并且 *args 必须放在 **kwargs 的前面,因为位置参数在关键字参数的前面。
接下来,我们就具体学学如何使用它们。
位置参数vs关键字参数
为了学习什么是*args和**kwargs,我们需要区分两个概念。
首先,分清楚位置参数和关键字参数的区别。在最基本的函数中,做一个匹配游戏——参数1与参数1匹配,参数2与参数2匹配,诸如此类。
def printThese(a,b,c):
print(a, "is stored in a")
print(b, "is stored in b")
print(c, "is stored inc")printThese(1,2,3)
"""
1 is stored in a
2 is stored in b
3 is stored in c
"""
三项参数都是必需的,缺了其中一个就会致错。
def printThese(a,b,c):
print(a, "is stored in a")
print(b, "is stored in b")
print(c, "is stored inc")printThese(1,2)
"""
TypeError: printThese() missing 1 required positional argument: 'c'
"""
为某函数定义中的参数给定默认值,该参数随后就会变为可选参数。