如何定义python里的默认参数?

python中的函数大家也学了不少了,那么默认参数是什么呢?有些小伙伴就不知道了。不着急,今天小编就为大家讲讲函数中的默认参数。

Python 处理默认参数值的方式是少数的几个能绊倒大部分初学者的问题之一(虽然一般只会绊倒一次)。

Python 做出这种让人费解的行为,往往是因为你把一个“可变”对象当做了函数的默认参数。即,一个可以原地进行改变的对象,比如说列表或者字典。 

举例:

>>> def function(data=[]):
...     data.append(1)
...     return data
...
>>> function()
[1]
>>> function()
[1, 1]
>>> function()
[1, 1, 1]

如代码所示,返回值列表变得的越来越长,而不是想象中的每次都是 [1] 。试着查看一下每次返回的列表的 ID,发现竟然没有变过。

>>> id(function())
12516768
>>> id(function())
12516768
>>> id(function())
12516768

原因也很简单,function() 函数在不同函数调用中一直在使用同一个列表对象。我们的修改(data.append(1))变成了粘滞操作。 

为什么会这样?那是因为默认参数语句,总是在 def 关键字定义函数的时候被求值,且仅执行这一次。

默认形参值会在执行函数定义时按从左至右的顺序被求值。这意味着当函数被定义时将对表达式求值一次,相同的“预计算”值将在每次调用时被使用。

需要注意的是,以关键字 def 开头的函数签名在 Python 中是个可执行语句,默认参数就是在def 表达式中被求值的。如果你执行 def 表达式多次,Python 就会每次为你创建一个新的函数对象(默认参数自然也会重新计算)。

以上就是python中默认参数的详解。更多Python学习推荐:云海天Python教程网。

来源:PY学习网:原文地址:https://www.py.cn/article.html

hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » 如何定义python里的默认参数?