Python PR

【Python】@(アットマーク)演算子の使い方

記事内に商品プロモーションを含む場合があります

この記事では、@(アットマーク)演算子の使い方を解説します。

アットマーク演算子は以下の2つの場面で使用します。

  • デコレーターを付与する
  • numpyで行列積を計算する

演算子と言っても1 @ 2などの演算はTypeErrorを送出するので注意してください。

それでは、アットマーク演算子の使い方を見ていきましょう!!

デコレーターを付与する

アットマーク演算子とデコレーター名を組み合わせて、以下のように関数定義の上部にくっ付けることでデコレーター関数の処理をその関数に追加することができます。

@デコレーター名
def デコレーターを付与する関数():
    # 何らかの処理

それでは、簡単な例を見てます。以下のコードではデコレーターを使って関数の出力の前後に開始と終了の出力を追加しています:

# デコレーター
def decorator(func):
    def wrapper(*args, **kw):
        print('デコレーター 開始')
        func(*args, **kw)
        print('デコレーター 終了')
    return wrapper


# アットマーク演算子を使ってデコレーターを付与
@decorator
def func():
    print('func 実行')

# 実行
func()

実行結果

デコレーター 開始
func 実行
デコレーター 終了

このようにアットマーク演算子を用いてデコレーターを付与することで関数に新たな処理を追加することが可能となります。

デコレーターについてさらに詳しく知りたい方は以下の記事を参照してください。

Linkデコレーターの定義方法と使い方を解説

numpyで行列積を計算する

numpy でアットマーク演算子を用いることで行列積を計算することができます。

通常、行列積を求めるにはdot()メソッドを使う必要がありました。しかし、Python 3.5 からアットマーク演算子を用いることで行列積を演算できるようになりました。

import numpy as np

a = np.array([[2, 3, 4],
             [5, -2, 3]])

b = np.array([[6, 1, 3],
             [-3, 0, 1],
             [5, 8, 5]])

print(a @ b)
print(a.dot(b))

実行結果

[[23 34 29]
 [51 29 28]]
[[23 34 29]
 [51 29 28]]

このように、アットマーク演算子を用いることで公式などと同じように式が書けるので可読性が向上します。

まとめ

この記事では、アットマーク演算子の使い方について解説しました。

アットマーク演算子はデコレーターを付与する際とnumpyで行列積を演算する際に使用します。

それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ