import inspect
class Test:
def test(self, p, d={}):
d.update(p)
return d
print inspect.getargspec(getattr(Test, 'test'))[3]
print Test().test({'1':True})
print inspect.getargspec(getattr(Test, 'test'))[3]
我期望argspec for Test.test不会改变,但由于dict.update它会。为什么?dict.update是否会影响函数的argspec?
'd = d或{}'有点奇怪,因为如果有人通过你自己的* dict对象传入其中的东西来改变它,但是如果有人传入了*他们自己的* dict对象(或另一种类似于它的对象)那是空的,它使用一个新的dict对象。如果我正在编写这样的代码,那么我可能会使用'if d是None:d = {}'或者更可能的是,绝不会改变我接收的参数。 – 2010-04-28 17:01:28
你在这里得到了一点 - 我正在编辑我的解决方案,以适应这一点。无论如何,我也同意不应该改变那里收到的论点。 – 2010-04-28 18:37:22