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 3.5 以降では、@ 記号を Python で行列の乗算を実行する演算子としても使用できるようになりました。
次の例は、Python での行列乗算の簡単な実装です。
class Mat(list):
def __matmul__(self, B):
A = self #Python小白学习交流群:153708845
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 での @ 記号の役割が理解できたはずです。このチュートリアルがお役に立てば幸いです。