@ Python の記号

Rohan Timalsina 2023年6月21日
  1. Python のデコレータで @ 記号を使用する
  2. @ 記号を使用して Python で行列を乗算する
@ Python の記号

Python での @ 記号の最も一般的な使用例は、デコレータです。 デコレーターを使用すると、関数またはクラスの動作を変更できます。

@ 記号は、Python で行列を乗算できるため、数学演算子としても使用できます。 このチュートリアルでは、Python の @ 記号の使い方を説明します。

Python のデコレータで @ 記号を使用する

デコレータは、関数を引数として受け取り、関数にいくつかの機能を追加し、変更された関数を返す関数です。

たとえば、次のコードを参照してください。

def decorator(func):
    return func


@decorator
def some_func():
    pass

これは、以下のコードと同等です。

def decorator(func):
    return func


def some_func():
    pass


some_func = decorator(some_func)

デコレーターは、元の関数のスクリプトを変更せずに、元の関数を変更します。

上記のコード スニペットの実用的な例を見てみましょう。

def message(func):
    def wrapper():
        print("Hello Decorator")
        func()

    return wrapper


def myfunc():
    print("Hello World")

@ 記号は、デコレーター関数の名前で使用されます。 装飾する関数の先頭に記述します。

@message
def myfunc():
    print("Hello World")


myfunc()

出力:

Hello Decorator
Hello World

上記のデコレーターの例は、このコードと同じ働きをします。

def myfunc():
    print("Hello World")


myfunc = message(myfunc)
myfunc()

出力:

Hello Decorator
Hello World

Python で一般的に使用されるデコレータには、@property@classmethod、および @staticmethod があります。

@ 記号を使用して Python で行列を乗算する

Python 3.5 から、@ 記号を演算子として使用して、Python で行列の乗算を実行することもできます。

次の例は、Python で行列を乗算する簡単な実装です。

class Mat(list):
    def __matmul__(self, B):
        A = self
        return Mat(
            [
                [
                    sum(A[i][k] * B[k][j] for k in range(len(B)))
                    for j in range(len(B[0]))
                ]
                for i in range(len(A))
            ]
        )


A = Mat([[2, 5], [6, 4]])
B = Mat([[5, 2], [3, 5]])
print(A @ B)

出力:

[[25, 29], [42, 32]]

それでおしまい。 Python の @ 記号は、デコレータと行列の乗算で使用されます。

@ 記号が Python で何をするかを理解する必要があります。 このチュートリアルがお役に立てば幸いです。

著者: Rohan Timalsina
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website