Categories: Python

【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で行列積を演算する際に使用します。

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

ゆうまる

独学でプログラミングを勉強しているおじさん。いろんな言語を勉強したが浅く広くなためあまり仕事につながらない。また忘れっぽいため自分のブログを備忘録としても使っている。産まれてこのかたずっとネコを飼ってる生粋のネコ派。最近お腹が出てきて筋トレに奮闘中!

Recent Posts

【Python】任意の秒数だけ処理を一時停止する方法【sleep()関数】

この記事では、Pythonで任意の秒数だ…

7か月 ago

【Python】Wordの文書の新規作成と読み書き

この記事では、Pythonを使ってWor…

7か月 ago

【Python】メタクラスって結局なんなの?

この記事では、Pythonのメタクラスに…

7か月 ago

【Unity】割合から数値に数値から割合に変換する

この記事では、割合から数値に変換する関数…

7か月 ago

【Python】抽象クラスを定義する方法

この記事では、Pythonで抽象クラスを…

7か月 ago