首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

Python默许参数为list,dict的话,只会初始化一次

2012-12-18 
Python默认参数为list,dict的话,只会初始化一次最近发现一个非常诡异的BUG,找了半天,才知道python函数的默

Python默认参数为list,dict的话,只会初始化一次

最近发现一个非常诡异的BUG,找了半天,才知道python函数的默认参数为dict的话,只会初始化一次

汗,孤陋寡闻了。。

?

如 def a( xxx = {} ):

xxx.apend(11)??

print xxx

?

a()

a()

a()

?

输出为

11

11 11

11 11 11

而非

11

11

11

?

切记切记,共习之

1 楼 jianpx 2011-04-03   写错了吧。。。x=[]才对阿。。。
这个不是bug, 是需要默认参数的时候要注意的地方。。。 2 楼 windytwang 2011-04-04   嗯,写错了。
是不是BUG,是因为我没有注意到这个特性,引起了BUG:)
不过这点跟其它语言挺不一样
3 楼 simomo 2011-04-27   哈哈~ 和我前一段遇到的问题很相似呢~
我把datetime.datetime.now()的值作为参数的默认值,
def get_now(now = datetime.datetime.now()):
    print now
结果每次调用get_now()打印出来的“当前时间”都是一个值~
给我郁闷坏了~

后来dir了get_now这个方法,发现这个方法一旦定义,它的__defaults__属性就已经填写好了~ 所以“当前时间”永远都是定义这个方法的那一刻~

热点排行