sunrise

每天不断学习,才能不断提升自己。

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  64 随笔 :: 0 文章 :: 92 评论 :: 0 Trackbacks
刚在群里一个人问的问题,前两天正好看过,记录一下。
__author__ = 'chenyu'

def f(i,L=[]):
    L.append(i)
    
return L

def f2(i,L=None):
    
if L  is None:
       L 
= []
    L.append(i)
    
return L

print f(1)
print f(2)
print f(3)


print f2(1)
print f2(2)
print f2(3)
输出:
[1]
[
1, 2]
[
1, 2, 3]
[
1]
[
2]
[
3]
按照预想的结果f()输出的应该是[1],[2],[3],但是每次上次的结果都被保留下来了。
造成这样的原因是python支持函数中的参数默认值是一个可变的list, 函数体内修改了原来的默认值,而python会将修改后的值一直保留,并作为下次函数调用时的参数默认值。
posted on 2013-01-17 17:43 SunRise_at 阅读(1637) 评论(0)  编辑 收藏 引用 所属分类: 可爱的python

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理