@ Python の記号
Rohan Timalsina
2023年6月21日
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