
【Python】@(アットマーク)の意味を簡単に解説
公開: 更新:Pythonにおける@(アットマーク)の意味
Pythonにおける@記号(アットマーク)は、デコレータと呼ばれる特殊な機能を表すために使用されます。デコレータは関数やメソッド、クラスを別の関数で包み込み、元の定義を変更せずに機能を拡張できる機能です。@演算子は関数やクラスの定義の直前に配置され、その後に続く関数やクラスに装飾を行います。
【サンプルコード】
# シンプルなデコレータの例
def my_decorator(func):
def wrapper():
print("処理の前に何か実行")
func()
print("処理の後に何か実行")
return wrapper
@my_decorator
def say_hello():
print("こんにちは!")
【実行結果】
say_hello()
処理の前に何か実行
こんにちは!
処理の後に何か実行
上記のサンプルコードではmy_decorator
関数がsay_hello
関数をラップし、実行前後に処理を追加しています。@を使わない場合はsay_hello = my_decorator(say_hello)
のように書く必要がありますが、@を使うことで読みやすく記述できます。
行番号 | 詳細説明 |
---|---|
1行目 | デコレータを定義するmy_decorator関数を宣言 |
2行目 | ラッパ関数wrapper内で実行前にprintでメッセージを表示 |
3行目 | ラップされる関数をfunc()で実行 |
4行目 | 実行後のメッセージをprintで表示 |
5行目 | @my_decoratorでsay_hello関数をデコレータで装飾 |
【PR】プログラミングや生成AIを無料で学べる「コードキャンプフリー」
Pythonの@(アットマーク)を使ったデコレータの応用例
Pythonのデコレータは引数を受け取る形で使用することが可能で、引数付きデコレータを作成するにはデコレータ関数を別の関数でラップする必要があります。この方法によってデコレータの動作をカスタマイズし、より柔軟なコード設計が出来るようになります。
【サンプルコード】
# 引数を取るデコレータの例
def repeat(n):
def decorator(func):
def wrapper(*args, **kwargs):
result = None
for _ in range(n):
result = func(*args, **kwargs)
return result
return wrapper
return decorator
@repeat(3)
def greet(name):
print(f"{name}さん、こんにちは!")
return "挨拶完了"
【実行結果】
result = greet("田中")
田中さん、こんにちは!
田中さん、こんにちは!
田中さん、こんにちは!
print(result)
挨拶完了
@repeat(3)というデコレータを使用すると、greet
関数が指定した回数だけ繰り返し呼び出されます。デコレータに引数を渡すことで振る舞いを切り替えられるため、さまざまな関数を汎用的にラップすること可能です。また、*args
や**kwargs
を使えば、引数の形に依存しないデコレータにできます。
行番号 | 詳細説明 |
---|---|
1行目 | repeat関数を定義しデコレータ生成用のdecorator関数を返す |
2行目 | decorator関数がwrapper関数を返す |
3行目 | wrapper関数で指定回数だけfuncを呼び出す |
4行目 | 最終呼び出しの結果をresultに格納し返す |
5行目 | @repeat(3)でgreet関数を装飾し引数を渡すデコレータを適用 |
※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。
ITやプログラミングに関するコラム
- 【Python】仮想環境から抜ける方法
- 【Python】文字列から改行コードを除去する方法
- 【Python】10回の繰り返し処理を実装する方法
- 【Python】df(DataFrame)とは?基本的な使い方やデータ操作について解説
- 【Python】指定のファイルがあれば削除する方法
ITやプログラミングに関するニュース
- Azure SQL Managed InstanceがVector型Public Preview対応開始、AI駆動アプリケーション開発の効率化を実現
- GoogleがGmailアプリにGeminiサマリーカードを導入、メール要約の自動表示機能が利用可能に
- ZenchordとNottaが共同開発したAIイヤホンZenchord 1をMakuakeで先行公開、音声認識から議事録作成まで自動化
- Ideinが音声解析AIサービス「Phonoscape」の提供を開始、対面接客現場での会話データ活用が可能に
- Microsoftが.NET 10 Preview 4でdotnet run app.cs機能をリリース、プロジェクトファイル不要でC#実行が可能に