Python中@符號的具體使用
Python 中 @ 符號最常見的用例是裝飾器。 裝飾器允許您更改函數(shù)或類的行為。
@ 符號也可以用作數(shù)學(xué)運(yùn)算符,因為它可以在 Python 中乘以矩陣。 本教程將教您使用 Python 的 @ 符號。
在 Python 的裝飾器中使用 @ 符號
裝飾器是一個函數(shù),它接受一個函數(shù)作為參數(shù),向它添加一些功能,并返回修改后的函數(shù)。
例如,請參見以下代碼。
def decorator(func): ? ? return func @decorator def some_func(): ? ? pass This is equivalent to the code below. def decorator(func): ? ? return func def some_func(): ? ? pass some_func = decorator(some_func)
裝飾器修改原始函數(shù)而不改變原始函數(shù)中的任何腳本。
讓我們看一下上述代碼片段的實際示例。
def message(func): ? ? def wrapper(): ? ? ? ? print("Hello Decorator") ? ? ? ? func() ? ? return wrapper def myfunc(): ? ? print("Hello World")
@ 符號與裝飾器函數(shù)的名稱一起使用。 它應(yīng)該寫在將被裝飾的函數(shù)的頂部。
@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 中執(zhí)行矩陣乘法的運(yùn)算符。
以下示例是 Python 中乘法矩陣的簡單實現(xiàn)。
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 中的 @ 符號用于裝飾器和矩陣乘法。
到此這篇關(guān)于Python中@符號的具體使用的文章就介紹到這了,更多相關(guān)Python @符號內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python 使用pdfminer3k 讀取PDF文檔的例子
今天小編就為大家分享一篇python 使用pdfminer3k 讀取PDF文檔的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08用Python實現(xiàn)童年貪吃蛇小游戲功能的實例代碼
這篇文章主要介紹了用Python實現(xiàn)童年貪吃蛇小游戲功能的實例代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12python3.6之xlwt如何設(shè)置單元格對齊方式
這篇文章主要介紹了python3.6之xlwt如何設(shè)置單元格對齊方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06Django model反向關(guān)聯(lián)名稱的方法
今天小編就為大家分享一篇Django model反向關(guān)聯(lián)名稱的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12