0
我試着去了解蟒蛇裝飾,但我表現出這種奇怪的行爲 在這段代碼我已經嘗試使用多種裝飾爲改變我的功能流程蟒蛇多個裝飾更改參數
這是代碼
def myfilter(f):
def decorator(data):
if data['num'] %2 == 0:
data['num'] = 90
f(data)
return decorator
def myduplicator(f):
def decorator(data):
print 'duplicator data', data
f(data)
print 'duplicator data', data
f(data)
return decorator
@myduplicator
@myfilter
def testone(data):
print data
for i in range(3):
testone({'num': i})
這就是答案
duplicator data {'num': 0}
{'num': 90}
duplicator data {'num': 90}
{'num': 90}
duplicator data {'num': 1}
{'num': 1}
duplicator data {'num': 1}
{'num': 1}
duplicator data {'num': 2}
{'num': 90}
duplicator data {'num': 90}
{'num': 90}
爲什麼裝飾的myduplicator第二個電話有變更數據導致
print 'duplicator data', data
f(data)
的結果,我想是
duplicator data {'num': 0}
{'num': 90}
duplicator data {'num': 0}
{'num': 90}
duplicator data {'num': 1}
{'num': 1}
duplicator data {'num': 1}
{'num': 1}
duplicator data {'num': 2}
{'num': 90}
duplicator data {'num': 2}
{'num': 90}
如果我想套用如下裝飾兩次我能做些什麼?我必須做一個燕子副本結構/字典? –