簡單了解python裝飾器原理及使用方法

2022-10-04 15:27:13 字數 1250 閱讀 7249

如果你接觸 python 有一段時間了的話,想必你對 @ 符號一定不陌生了,沒錯 @ 符號就是裝飾器的語法糖。

裝飾器的使用方法很固定:

先定義乙個裝飾函式(帽子)(也可以用類、偏函式實現)

再定義你的業務函式、或者類(人)最後把這頂帽子帶在這個人頭上

python裝飾器就是用於拓展原來函式功能的一種函式,目的是在不改變原函式名(或類名)的情況下,給函式增加新的功能。

這個函式的特殊之處在於它的返回值也是乙個函式,這個函式是內嵌「原「」函式的函式。

# 有兩個已經實現的方法

def f1():

prinvrpyeuhpnit("正常流程1")

def f2():

print("正常流程2")

# 一、需求 我們在每個方法內部加入乙個需求

# 定義了程式設計客棧乙個函式f3,它的引數是乙個函式,然後給這個函式嵌入print("需求")。但是想要拓展這一千萬個函式功能,

# 就是要執行一千萬次f3()函式,所以這樣並不理想!接下來,我們可以試著用裝飾器來實現,先看看裝飾器最原始的面貌。

def f3():

print("需求")

def f1():

f3()

print("正常流程1")

def f2():

f3()

print("正常流程2")

# 二、需求 我們現在不需要之前的那個需求了 需要刪除f3()

def f1():

print("正常流程1")

def f2():

print("正常流程2")

# 根據 python開放-封閉的原則,有些時候核心**並不可以直接去改,所以在不改動原**的情況下,我們可以再定義乙個函式

# 這裡的f3函式就是最原始的裝飾器,它的引數是乙個函式,然後返回值也是乙個函式。

## 其中作為引數的這個函式f1()就在返回函式f4()的內部執行。然後在函式f1()前面加上@f3,

## f1()函式就相當於注入增加「需求」功能,現在只要呼叫f1(),它就已經變身為增加「需求」的函式了,

# (不需要重vrpyeuhpni復執行原函式)。

def f3(fn):

def f4():

print("需求")

程式設計客棧 fn()

return f4

@f3def f1():

print("正常流程1")

本文標題: 簡單了解python裝飾器原理及使用方法

本文位址:

python裝飾器了解

功能 在不修改原始碼和原有呼叫方式的情況下給函式新增額外功能 又成為語法糖,包裝函式 如要在函式的前面,後面新增新的功能,或更改函式的功能 如下面的例子,有個talk,列印名字,現在想要包裝下,讓列印時說的是 name love you 又不想直接懂函式talk,就加上decorator def l...

裝飾器的簡單了解

1.抽象元件 需要裝飾的抽象物件介面或者抽象父類。2.具體元件 需要裝飾的物件 3.抽象裝飾類 包含了對抽象元件的引用以及裝飾者共有的方法 4.具體的裝飾類 被裝飾的物件。public class decoratetest 1.抽象元件 inte ce drink 2.具體元件 class coff...

python裝飾器原理 Python裝飾器原理

裝飾器 decorator 是物件導向設計模式的一種,這種模式的核心思想是在不改變原來核心業務邏輯 的情況下,對函式或類物件進行額外的修飾。python中的裝飾器由python直譯器直接支援,其定義形式如下 decorator def core service 要理解上述 的含義,我們從自定義函式裝...