From 28eac4facbfcb6ce94a804d9e113b5ceb3fea8ae Mon Sep 17 00:00:00 2001 From: yyang99 Date: Sat, 2 Mar 2024 10:24:15 -0500 Subject: [PATCH] add more example for registration decorator with param --- 09-closure-deco/registration_param_1.py | 26 +++++++++++++++++++ 09-closure-deco/registration_param_2_main.py | 8 ++++++ .../registration_param_2_module_funcs.py | 15 +++++++++++ .../registration_param_2_module_registry.py | 12 +++++++++ 4 files changed, 61 insertions(+) create mode 100644 09-closure-deco/registration_param_1.py create mode 100644 09-closure-deco/registration_param_2_main.py create mode 100644 09-closure-deco/registration_param_2_module_funcs.py create mode 100644 09-closure-deco/registration_param_2_module_registry.py 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> +