ホームページ > バックエンド開発 > Python チュートリアル > Pythonデコレーターの理解:例がある初心者向けガイド

Pythonデコレーターの理解:例がある初心者向けガイド

Barbara Streisand
リリース: 2025-01-27 16:12:11
オリジナル
827 人が閲覧しました

Understanding Python Decorators: A Beginner’s Guide with Examples

Python装飾:初心者ガイドと例

Pythonデコレーターは、関数またはメソッドの動作を変更するための強力で普遍的なツールです。コード構造を変更せずに、既存のコードに関数を追加できます。この記事では、装飾装置を分析し、簡単な例を提供して、それらを効果的に理解して使用するのに役立ちます。

装飾器は何ですか?

Pythonのデコレーターは、基本的にパラメーターとして別の関数を受信し、その動作を拡張または変更する関数です。装飾は通常、既存の機能または方法にロギング、アクセス制御、メモリ、または確認を追加するために使用されます。

Pythonの装飾は、

文法が関数定義に適用されます。

デコレーターの構造@decorator_name

基本的なデコレーター関数には次の構造があります。

アプリケーションの装飾

文法または手動方法を使用して、装飾を関数に適用できます。

def decorator_function(original_function):
    def wrapper_function(*args, **kwargs):
        # 在原始函数执行之前的代码
        result = original_function(*args, **kwargs)
        # 在原始函数执行之后的代码
        return result
    return wrapper_function
ログイン後にコピー
例1:基本的なdeoles

関数が実行される前後にメッセージを印刷するシンプルな装飾デバイスを作成しましょう。

@decorator_name

<出>output:
@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>
ログイン後にコピー
<出>output:

2。

タスクの実行を追跡するのに必要な時間は、パフォーマンスの監視に非常に役立ちます。

<出>output:

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>
ログイン後にコピー

<出>output:

キーポイント<关>

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コードを作成するための貴重なツールを習得します。この概念に精通する例を試してみてください!

以上がPythonデコレーターの理解:例がある初心者向けガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート