Pythonデコレーターは、関数またはメソッドの動作を変更するための強力で普遍的なツールです。コード構造を変更せずに、既存のコードに関数を追加できます。この記事では、装飾装置を分析し、簡単な例を提供して、それらを効果的に理解して使用するのに役立ちます。
装飾器は何ですか?Pythonのデコレーターは、基本的にパラメーターとして別の関数を受信し、その動作を拡張または変更する関数です。装飾は通常、既存の機能または方法にロギング、アクセス制御、メモリ、または確認を追加するために使用されます。
デコレーターの構造@decorator_name
def decorator_function(original_function): def wrapper_function(*args, **kwargs): # 在原始函数执行之前的代码 result = original_function(*args, **kwargs) # 在原始函数执行之后的代码 return result return wrapper_function
@decorator_name
@decorator_function def some_function(): print("这是原始函数。") # 等同于: # some_function = decorator_function(some_function)
例2:パラメーターを備えたデコール
def simple_decorator(func): def wrapper(): print("函数调用之前。") func() print("函数调用之后。") return wrapper @simple_decorator def say_hello(): print("Hello, World!") say_hello()
<出>output:
<code>函数调用之前。 Hello, World! 函数调用之后。</code>
デコールは、実際のシナリオで広く使用されています。ここにいくつかの単純化された実用的な例があります:
def repeat_decorator(times): def decorator(func): def wrapper(*args, **kwargs): for _ in range(times): func(*args, **kwargs) return wrapper return decorator @repeat_decorator(3) def greet(name): print(f"Hello, {name}!") greet("Alice")
1。 装飾を使用して、ユーザーの操作の時間を記録できます。
<code>Hello, Alice! Hello, Alice! Hello, Alice!</code>
2。
def log_action(func): def wrapper(*args, **kwargs): print(f"操作:正在执行 {func.__name__}。") return func(*args, **kwargs) return wrapper @log_action def upload_file(filename): print(f"正在上传 {filename}...") upload_file("report.pdf")
3。 装飾は、動的要素を追加することでパーソナライズできます。
<code>操作:正在执行 upload_file。 正在上传 report.pdf...</code>
キーポイント<关>
import time def track_time(func): def wrapper(*args, **kwargs): start = time.time() result = func(*args, **kwargs) end = time.time() print(f"{func.__name__} 执行耗时 {end - start:.2f} 秒。") return result return wrapper @track_time def download_file(file_size): time.sleep(file_size / 10) # 模拟下载时间 print("下载完成。") download_file(50)
ログレコード、タイミング、パーソナライズなど、繰り返しタスクを簡素化できます。
<法>グラマーを使用すると簡単に適用できます。<code>下载完成。 download_file 执行耗时 5.00 秒。</code>
以上がPythonデコレーターの理解:例がある初心者向けガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。