【 在 olddognewwit 的大作中提到: 】
: 刚看了觉得有点奇怪,其实如果换成c++就好理解了。对比一下假如默认参数是一个指针,指向一个已分配空间的地址,那么每次调用都有可能改变这个指针所指向的内容的值。
其实, 还是有些区别的,
python里面都是对象, 函数是对象, 类也是对象, 这一点和c++是不一样的。
切换到这个问题,
前面说的, f这个函数,只会执行一次初始化, 从而生成默认参数, 这种说法是不准确的,
实际上, f函数生成的对象,作为一个对象,是被多次使用, 只是增加减少了引用计数, 因为一直使用的是同一个函数对象,当然这个对象生成时产生的默认参数是同一个对象。
我的意思是说, 你完全可以把它del掉, 或者说, 触发析构函数, 在重新加载,或者创建这个函数对象, 如果发生了重新创建, 这个对象的默认参数也会触发重新生成。
--
修改:poggy FROM 115.171.244.*
FROM 115.171.244.*