diff --git a/09-closure-deco/registration_param_1.py b/09-closure-deco/registration_param_1.py new file mode 100644 index 0000000..31209da --- /dev/null +++ b/09-closure-deco/registration_param_1.py @@ -0,0 +1,26 @@ +# tag::REGISTRATION_PARAM[] + +registry = dict() # <1> + +def register(key): # <2> + def decorate(func): # <3> + print('running register' + f'(key={key})->decorate({func})') + registry[key] = func + return func # <6> + return decorate # <7> + +@register('key1') # <8> +def f1(): + print('key1') + +@register('key2') # <9> +def f2(): + print('key2') + +def f3(): + print('running f3()') + +# end::REGISTRATION_PARAM[] +if __name__ == "__main__": + print(registry) \ No newline at end of file diff --git a/09-closure-deco/registration_param_2_main.py b/09-closure-deco/registration_param_2_main.py new file mode 100644 index 0000000..6ee16d8 --- /dev/null +++ b/09-closure-deco/registration_param_2_main.py @@ -0,0 +1,8 @@ +# tag::REGISTRATION_PARAM[] + +from registration_param_2_module_registry import registry +import registration_param_2_module_funcs # Note: need this import to register funcs in registration_param_2_module_funcs.py + +# end::REGISTRATION_PARAM[] +if __name__ == "__main__": + print(registry) diff --git a/09-closure-deco/registration_param_2_module_funcs.py b/09-closure-deco/registration_param_2_module_funcs.py new file mode 100644 index 0000000..fe8a427 --- /dev/null +++ b/09-closure-deco/registration_param_2_module_funcs.py @@ -0,0 +1,15 @@ +from registration_param_2_module_registry import register + + +@register('key1') # <8> +def f1(): + print('key1') + + +@register('key2') # <9> +def f2(): + print('key2') + + +def f3(): + print('running f3()') diff --git a/09-closure-deco/registration_param_2_module_registry.py b/09-closure-deco/registration_param_2_module_registry.py new file mode 100644 index 0000000..1b52778 --- /dev/null +++ b/09-closure-deco/registration_param_2_module_registry.py @@ -0,0 +1,12 @@ +# tag::REGISTRATION_PARAM[] + +registry = dict() # <1> + +def register(key): # <2> + def decorate(func): # <3> + print('running register' + f'(key={key})->decorate({func})') + registry[key] = func + return func # <6> + return decorate # <7> +