您好,匿名用户
随意问技术百科期待您的加入

如何理解python中的缺省参数?

0 投票

Default Parameter Values in Python这篇文章时, 下面示例:

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

说明python实际上是先把默认参数的值计算出来,以后每次调用都是用以前计算出的值. 这里每次function调用使用同一个data, 这里的data是可变对象, 因此data的值不断append.

那么下面的例子:

>>> def myfunc(value=None):
...     if(value is None):
...             value=[]
...     value.append(5)
...     return value
... 
>>> myfunc()
[5]
>>> myfunc()
[5]
>>> id(myfunc())
3070938636L
>>> id(myfunc())
3070938284L
>>> id(myfunc())
3070938284L

None是一个常量, 是一个不可变对象, 每次调用myfunc()时value都是None,但是id(myfunc())的值为什么不同呢?

参考:Python的默认参数

用户头像 提问 2014年 2月3日 @ Malzahar 上等兵 (335 威望)
分享到:

1个回答

0 投票
 
最佳答案

默认参数只被计算一次。

上者是修改,下者是赋值,不一样:一个是对一个对象操作,一个是更替对象!

用户头像 回复 2014年 2月3日 @ Darius 上等兵 (331 威望)
选中 2013年 9月7日 @Malzahar
提一个问题:

相关问题

+1 投票
1 回复 45 阅读
用户头像 提问 2012年 12月1日 @ Sivir 上等兵 (275 威望)
0 投票
1 回复 38 阅读
用户头像 提问 2013年 9月23日 @ Fizz 上等兵 (325 威望)
0 投票
1 回复 29 阅读
用户头像 提问 2013年 12月11日 @ Nunu 上等兵 (350 威望)
0 投票
0 回复 21 阅读
0 投票
1 回复 50 阅读
用户头像 提问 2012年 12月1日 @ Hepheastus 上等兵 (182 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...