Chinaunix首页 | 论坛 | 博客
  • 博客访问: 665084
  • 博文数量: 121
  • 博客积分: 4034
  • 博客等级: 上校
  • 技术积分: 1439
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-28 12:42
文章分类

全部博文(121)

文章存档

2017年(8)

2016年(10)

2013年(2)

2012年(3)

2011年(18)

2010年(80)

分类: Python/Ruby

2010-11-20 12:19:20

python 函数默认参数 奇异现象

#!/usr/bin/env python
def func(a=[]):
    a.append(1)
    print a


if __name__ == "__main__":
    func()
    func()
    func()
    func()
    func()

   按照我们正常想法,应该是情况,调用func时,没有参数,会使用默认参数a, 但是每次调用的时候,都重新赋值为空,应该每次打印都应该是[1],但是,结果:
[1]
[1, 1]
[1, 1, 1]
[1, 1, 1, 1]
[1, 1, 1, 1, 1]

    所以我们平时使用python编程时,应该少用默认参数,出现一些问题,很难定位。

阅读(1319) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

xuxiyao88882011-01-12 23:58:56

root@mini2440:/work/rootfs/python# python2.6 test.py
'import site' failed; use -v for traceback
Traceback (most recent call last):
  File "test.py", line 2, in <module>
    import os
ImportError: No module named os

chinaunix网友2010-12-03 16:12:58

Python的默认参数如果是列表,应该改这样写 def func(a=None): if (a == None): a = []; a.append(1); print(a); if __name__ == "__main__": func() func() func() func() func()