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