怎样定义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里的默认参数
网站URL:http://myzitong.com/article/jiiigj.html