モジュールが異なる場合、このデコレータはつかえる?
はい、異なるモジュールに定義された関数に対しても同様にデコレータを適用することができます。デコレータは Python の機能であり、関数やメソッドの定義時に関数やメソッドを修飾するためのものです。そのため、同じ Python インタプリタの中で定義されたどのモジュールでもデコレータを使用することができます。
たとえば、以下のように異なるモジュールで定義された関数にデコレータを適用することができます。
python
# module1.py import functools import logging logging.basicConfig(filename='history.log', level=logging.INFO) def log_function_call(func): @functools.wraps(func) def wrapper(*args, **kwargs): logging.info(f"Function {func.__name__} started.") result = func(*args, **kwargs) logging.info(f"Function {func.__name__} finished.") return result return wrapper @log_function_call def function_in_module1(x, y): return x + y
python
# module2.py from module1 import function_in_module1 def another_function(): result = function_in_module1(3, 4) return result
このように、module1で定義された関数function_in_module1に対してデコレータを適用し、module2でそれを呼び出すことができます。module2でanother_functionを呼び出すと、function_in_module1の開始と終了がログに記録されます。

ディスカッション
コメント一覧
まだ、コメントがありません