为啥呢?我们在调用函数的时候没有传递参数,那么就默认使用 L=[],经过处理,L 应该只有一个元素,怎么会出现调用函数两次,L 就有两个元素呢?
在 Python 中,定义函数和调用函数都很简单,但如何定义函数参数和传递函数参数,则涉及到一些套路了。总的来说,Python 的函数参数主要分为以下几种:
在上面的函数中,L 是一个默认参数,默认值是 [],表示空列表。
默认参数是指在定义函数的时候提供一些默认值,如果在调用函数的时候没有传递该参数,则自动使用默认值,否则使用传递时该参数的值。
比如,定义一个包含上述四种参数的函数:
可变参数允许你将不定数量的参数传递给函数,而关键字参数则允许你将不定长度的键值对 作为参数传递给一个函数。
应该使用不可变对象作为函数的默认参数。
和可变参数类似,我们也可以使用 **kwargs 的形式来调用函数,比如:
在调用函数的时候,Python 会自动按照参数位置和参数名把对应的参数传进去。让我们看看:
再来看看为什么默认参数应该使用不可变对象。
在上面的代码中,numbers 就是一个可变参数,参数前面有一个 * 号,表示是可变的。在函数内部,参数 numbers 接收到的是一个 tuple。
再看一个例子: