可能重复:
“Least Astonishment” in Python: The Mutable Default Argument
class Klass(object):
def a(self, d={}):
print d
self.b(d)
def b(self, d={}):
import random
print d
d[str(random.random())] = random.random()
我假设每次在没有参数的情况下调用c.a()
时,我都会得到一个空的dict
。然而,实际情况就是这样:
>>> c = Klass()
>>> c.a()
{}
{}
>>> c.a()
{'0.637151613258': 0.61491180520119226}
{'0.637151613258': 0.61491180520119226}
>>> c.a()
{'0.637151613258': 0.61491180520119226, '0.960051474644': 0.54702415744398669}
{'0.637151613258': 0.61491180520119226, '0.960051474644': 0.54702415744398669}
...
我真的不想做某种lambda
/ iscallable
事。在这里使用什么样的好模式?
当然,在我开始输入问题时,我想出了解决问题的方法。但是,如果有人有不同的宠物方式,我很乐意听到。
答案 0 :(得分:1)