ホームページ >バックエンド開発 >Python チュートリアル >Python デコレータを使用して関数を太字や斜体にしたり、タイムスタンプを追加したり、メソッドの結果を大文字にしたりするにはどうすればよいですか?

Python デコレータを使用して関数を太字や斜体にしたり、タイムスタンプを追加したり、メソッドの結果を大文字にしたりするにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-24 16:33:17558ブラウズ

How Can I Use Python Decorators to Make Functions Bold and Italic, Add Timestamps, and Capitalize Method Results?

デコレータを使用して関数を太字および斜体にする

デコレータは、他の関数を拡張する Python 関数です。 @make_bold と @make_italic という 2 つのデコレーターを作成して、テキストを太字と斜体の書式設定します。方法は次のとおりです:

</p>
<h1>テキストを太字にするデコレータ</h1>
<p>def make_bold(func):</p>
<pre class="brush:php;toolbar:false">def wrapper():
    return "<b>" + func() + "</b>"  # Surround the result with bold tags
return wrapper

テキストを斜体にするデコレータ

定義make_italic(func):

def wrapper():
    return "<i>" + func() + "</i>"  # Surround the result with italic tags
return wrapper

@make_bold
@make_italic
def Say():

return "Hello"

print(say()) # 出力: "Hello"

引数を使用した関数の装飾

引数を受け入れるデコレーターを作成することもできます。たとえば、結果にタイムスタンプを追加するデコレータを作成してみましょう。

<br>インポート時間</p>
<h1>関数にタイムスタンプを追加するデコレータ</h1>
<p>確かにadd_timestamp(func):</p>
<pre class="brush:php;toolbar:false">def wrapper(*args, **kwargs):
    timestamp = time.ctime()  # Get the current time
    return f"{timestamp}: {func(*args, **kwargs)}"  # Prepend the timestamp to the call
return wrapper

@add_timestamp
defgreet(name):

return f"Hello, {name}!"

print(greet("John")) # 出力: "2023-01 -01 12:00:00: こんにちは。 John!"

メソッドのデコレータ

デコレータは関数だけでなくメソッドに対しても機能します。メソッドを修飾する方法は次のとおりです:

<br>class User:</p>
<pre class="brush:php;toolbar:false">def __init__(self, name):
    self.name = name

ユーザー名を大文字にするデコレータ

def Capitalize_name(メソッド):

def wrapper(self):
    return method(self).capitalize()  # Capitalize the result
return wrapper

@capitalize_name
def get_name(self):

return self.name

user = User("john")
print(user.get_name ()) # 出力: "John"

ベスト プラクティス

  • 読みやすい @syntax を使用して関数を装飾します。
  • デコレータを軽量に保ちますパフォーマンスのオーバーヘッドを避けるため。
  • functools.wraps() を使用して、元の関数のメタデータ (名前、ドキュメント文字列) を保持します。
  • ロギング、キャッシュ、エラー処理などの横断的な問題については、デコレータの使用を検討してください。

以上がPython デコレータを使用して関数を太字や斜体にしたり、タイムスタンプを追加したり、メソッドの結果を大文字にしたりするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。