av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

Python中的裝飾器

在編程中,裝飾器是一種設計模式,它動態(tài)地向?qū)ο筇砑宇~外的職責。在 Python 中,一個函數(shù)是一階對象。 因此,Python 中的裝飾器在不修改函數(shù)的情況下,動態(tài)地向函數(shù)添加額外的責任/功能。

在 Python 中,一個函數(shù)可以作為參數(shù)傳遞給另一個函數(shù)。也可以在另一個函數(shù)內(nèi)部定義一個函數(shù),一個函數(shù)可以返回另一個函數(shù)。

因此,Python 中的裝飾器是一個接收另一個函數(shù)作為參數(shù)的函數(shù)。參數(shù)函數(shù)的行為是由裝飾器擴展的,并沒有實際修改它??梢允褂聾decorator 語法在函數(shù)上應用 decorator 函數(shù)。

讓我們逐步理解 Python 中的裝飾器。

假設我們有greet()功能,如下所示。

Example: A Function

def greet():
    print('Hello! ', end='') 

現(xiàn)在,我們可以通過將上面的函數(shù)傳遞給另一個函數(shù)來擴展它的功能,而無需修改它,如下所示。

Example: A Function with Argument

def mydecorator(fn):
    fn()
    print('How are you?') 

上圖,mydecorator()函數(shù)以一個函數(shù)為自變量。它調(diào)用參數(shù)函數(shù),還打印一些附加的東西。因此,它擴展了greet()功能的功能,而沒有對其進行修改。 然而,它并不是真正的裝飾者。

Example: Calling Function in Python Shell

>>> mydecorator(greet)
Hello! How are you? 

mydecorator()不是 Python 中的裝飾器。Python 中的裝飾器可以使用@decorator_function_name語法在任何適當?shù)暮瘮?shù)上定義,以擴展底層函數(shù)的功能。

以下定義了上述greet()功能的裝飾器。

Example: A Decorator Function

def mydecorator(fn):
    def inner_function():        
        fn()
        print('How are you?')
    return inner_function 

mydecorator()函數(shù)是以函數(shù)(任何不取任何參數(shù)的函數(shù))為參數(shù)的裝飾函數(shù)。 內(nèi)部函數(shù)inner_function()可以訪問外部函數(shù)的參數(shù),所以它在調(diào)用參數(shù)函數(shù)之前或之后執(zhí)行一些代碼來擴展功能。 mydecorator函數(shù)返回一個內(nèi)部函數(shù)。

現(xiàn)在,我們可以使用mydecorator作為裝飾器來應用于不接受任何參數(shù)的函數(shù),如下所示。

Example: Applying Decorator

@mydecorator
def greet():
    print('Hello! ', end='') 

現(xiàn)在,調(diào)用上面的greet()函數(shù)會給出如下輸出。

Example: Calling a Decorated Function

>>> greet()
Hello! How are you? 

mydecorator可以應用于任何不需要任何參數(shù)的函數(shù)。例如:

Example: Applying Decorator

@mydecorator
def dosomething():
    print('I am doing something.', end='') 

Example: Calling Decorated Function in Python Shell

>>> dosomething()
I am doing something. How are you? 

典型的裝飾函數(shù)如下所示。

Decorator Function Syntax

def mydecoratorfunction(some_function): # decorator function
    def inner_function(): 
        # write code to extend the behavior of some_function()
        some_function() # call some_function
        # write code to extend the behavior of some_function()
    return inner_function # return a wrapper function 

內(nèi)置裝飾器

Python 庫包含許多內(nèi)置裝飾器,作為定義屬性、類方法、靜態(tài)方法等的快捷方式。

裝飾者 描述
@property將方法聲明為屬性的 setter 或 getter 方法。
@classmethod將方法聲明為類的方法,可以使用類名調(diào)用該方法。
@staticmethod將方法聲明為靜態(tài)方法。

接下來了解內(nèi)置 decorator @property。*****


本文題目:Python中的裝飾器
轉(zhuǎn)載注明:http://uogjgqi.cn/article/djojchs.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網(wǎng)交流