gpt4 book ai didi

Python:dict默认参数...我怎么不知道它们是这样工作的?

转载 作者:太空宇宙 更新时间:2023-11-03 19:10:30 24 4
gpt4 key购买 nike

Possible Duplicate:
“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事物。这里使用什么好的模式?

当然,当我开始输入问题时,我就找到了解决问题的好方法。但是,如果有人对此有不同的宠物方式,我很想听听。

最佳答案

可以获得一个新的、空的dict:

    def a(self, d=None):
if d is None:
d = {}

问题描述得很好here可变默认参数下。

关于Python:dict默认参数...我怎么不知道它们是这样工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13114178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com