example-code-2e/09-closure-deco/registration_param.py
2020-06-11 14:58:15 -03:00

29 lines
565 B
Python

# tag::REGISTRATION_PARAM[]
registry = set() # <1>
def register(active=True): # <2>
def decorate(func): # <3>
print('running register'
f'(active={active})->decorate({func})')
if active: # <4>
registry.add(func)
else:
registry.discard(func) # <5>
return func # <6>
return decorate # <7>
@register(active=False) # <8>
def f1():
print('running f1()')
@register() # <9>
def f2():
print('running f2()')
def f3():
print('running f3()')
# end::REGISTRATION_PARAM[]