Python 中的 Pie 語法 (@)
Pi 方法或 Pi 語法用於在 Python 中裝飾函式或方法,被稱為裝飾器。Pi 方法用於修改函式或方法的行為。
Pie 語法 (@) 可以透過簡單地在函式定義的上方放置 @ 符號和裝飾器函式的名稱來使用。當函式被呼叫時,Python 會被指示使用裝飾器。
Pie 語法 (@) 具有允許在函式呼叫中實現更多靈活性的優點。在處理複雜資料結構或需要傳入可變數量的引數時,Pie 語法 (@) 允許您將多個引數作為單個引數傳入。這將使您的程式碼更靈活和特定於情況。
語法
@<my_decorator>
方法 1:使用函式裝飾器
示例 1
def my_decor(fun):
print("Welcome")
fun()
print("Tutorialspoint")
@my_decor
def main():
print("to")
if __name__ == 'main':
main()
輸出
Welcome to Tutorialspoint
在此程式碼中,建立了一個名為 my_decor 的裝飾器函式。此函式繼承並處理另一個名為 fun 的函式。
在此裝飾器函式中,首先鍵入“Welcome”列印歡迎訊息。然後呼叫 fun(),它會執行 fun 函式。最後列印“Tutorialspoint”。
在上面的程式碼中,名為 main 的函式由裝飾器 my_decor 裝飾。因此,main 函式被傳遞給 my_decor,並且 my_decor 函式接收並處理它。my_decor 函式列印歡迎訊息,然後呼叫 main 函式,最後列印“Tutorialspoint”。
如果檢查 __name__ 以檢視程式碼是否僅作為主程式執行。當 main 是程式時,__name__ 將等於“main”,因此呼叫 main 函式。
示例 2
def my_decor1(fun): # 1st decorator
print("---reading---")
def my_decor2(fun): # 2nd decorator
print("---Visit---")
fun()
print("---for---")
@my_decor1
@my_decor2
def main():
print("---Tutorialspoint---")
if __name__ == 'main':
main()
輸出
---Visit--- ---Tutorialspoint--- ---for--- ---reading---
在此程式中,我們提供了三個不同的函式:my_decor1、my_decor2 和 main。這些工作專門用於裝飾。
第一個函式是 my_decor1,我們列印訊息“---reading---”。它在第二個函式 my_decor2 之前執行。
第二個函式是 my_decor2,我們列印訊息“---Visit---”。然後我們呼叫 fun(),它將呼叫 main。main 的列印語句“---Tutorialspoint---”執行。然後我們列印“---for---”。
main 函式以兩種方式進行裝飾。第一個裝飾屬於 my_decor2,第二個裝飾屬於 my_decor1。這意味著要先裝飾 main,my_decor2 函式將執行,然後 my_decor1 函式將執行。最後將列印結果。
方法 2:使用類方法裝飾器
示例 1
class Subject:
count = 0
def __init__(self, sub):
self.sub = sub
Subject.count += 1
@classmethod #class method decorator(@)
def get_count(dec):
return dec.count
Subject1 = Subject("Python")
Subject2 = Subject("DBMS")
Subject3 = Subject("HTML")
print(Subject.get_count())
輸出
3
在此程式碼中,我們有一個名為“Subject”的類,它有一個區域性變數“count”。有一個名為 __init__() 的方法,在建立物件時呼叫。此方法設定由這兩個方法返回的成員變數“sub”,並將“Subject.count”遞增 1。
有一個名為 get_count() 的類方法,它返回“Subject”類的成員變數“count”。接下來,我們建立三個“Subject”物件(Subject1、Subject2、Subject3)並分別為它們分配“Python”、“DBMS”和“HTML”成員變數。然後我們列印“Subject.get_count()”,它將輸出“3”。
示例 2
class Team:
count = 0
def __init__(self, tm):
self.tm = tm
Team.count += 1
@classmethod #class method decorator(@)
def get_count(team):
return team.count
Team_1 = Team("CSK")
Team_2 = Team("KKR")
Team_3 = Team("RCB")
Team_4 = Team("LSG")
print(Team.get_count())
輸出
4
在此程式碼中,我們建立了一個名為“Team”的類。此類有一個名為“count”的空間數,初始化為 0。此外,此類有一個名為“init”的內部方法,它接受一個名為“tm”的空間引數並將其儲存在“self.tm”中。此外,此方法用於遞增“Team.count”。
接下來,我們建立了一個名為“get_count”的“@classmethod”,它接受一個名為“team”的空間引數作為引數。此方法返回“team.count”。在下一步中,我們從“Team_1”到“Team_4”建立了四個組合,每個組合都有自己的名稱(依次為“CSK”、“KKR”、“RCB”、“LSG”)。
最後,我們使用了“print(Team.get_count())”,它呼叫了“Team”類使用的“get_count”方法。這給了我們“Team”類中建立的組合總數。
結論
總之,Python 中的 (@) 語法是它是一個用於修改或修改函式行為的裝飾器。它允許一個函式被另一個函式編輯。(@)裝飾器由使用者用來更改預設行為,更改類的行為,記錄,快取等。它可以是類,引數,函式或使用者定義的裝飾器,使用 @ 符號在函式上方的裝飾器進行裝飾。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP