초기 코드가 혼동하여 편집 중입니다.장식자는 부작용이 없어야합니까?
는 내가 장식 deco
부작용이있는 경우
#I would use either of these
#Option 1
def bar(*args):
pass
foo = deco(bar)
#Option2
@deco
def foo(*args):
pass
그러나,이 보장되지 않으므로,이 두 가지가 동일한 것으로 가정한다. partcicular,이 내 ecpectation가 장식 (NO 부작용)를 형성했다, 나는
#Option1
def bar(*args):
pass
foo = register.filter(bar)
#Option 2
@register.filter
def foo(val, arg):
pass
그래서 내 기대 잘못, 또는과 일치되는 장고이며, 측면 effct 하나를 가로 질러 와서 그것에 의해 물린 모범 사례?
짐 후구 닌 2004에서 스레드가 그렇게 생각하는 것 같다. http://mail.python.org/pipermail/python-dev/2004-April/044133.html – agiliq
아래 질문에서 질문을 했으므로 바를 추가 할 수 있습니다. – agiliq
예제는 이해가되지 않습니다. 왜냐하면 당신이 정의한 foo를 버리기 때문입니다. 당신은 데코를 사용하여 foo를 꾸미므로 새로운 foo를 얻을 수 있습니다. – hop