裝飾器是乙個函式,它可以裝飾其他的函式或類並為其提供額外的功能。
gof設計模式(在特定場景下可以復用的設計經驗,一共23種經典的場景)
裝飾器實現了設計模式的**模式,用**物件執行被**的行為並新增額外的功能。
**模式
通常解決的都是程式橫切關注功能
問題(跟正常業務邏輯沒有必然聯絡的功能)
import random
from functools import wraps
defchange_return_value
(func)
:# 可以隨時取消掉裝飾器
@wraps(func)
def(
*args,
**kwargs)
: result = func(
*args,
**kwargs)
# 可以跟元組,匹配任意乙個即可
# if isinstance(result,(str,int)):
iftype
(result)
==str
: result = result.title(
)return result
# say_hello = change_return_value(say_hello)
@change_return_value
defsay_hello()
:return
'hello,world!'
@change_return_value
defget_num()
:return random.randint(1,
101)
print
(say_hello())
print
(get_num())
# 取消掉裝飾器
print
(say_hello(
))
裝飾器的應用
from flask import flask,render template,request,redirect,session sdsfdsgdfgdfgfh 設定session時,必須要加鹽,否則報錯 def def inner args,kwargs ifnot session.get use...
Python裝飾器的原理與應用
裝飾器是什麼東西呢?就是起到裝飾作用的這麼乙個函式,那這玩意有啥用呢?很多人都會丟擲這樣的疑問,咱們就通俗的說一下這個裝飾器到底是什麼東西,是什麼工作原理呢?首先,裝飾顧名思義就是裝飾用,為什麼需要對函式裝飾呢?是因為要遵循乙個 開放 封閉 原則,因為已經寫好的函式可能已經經過很久的測試和應用,沒有...
python函式與裝飾器的綜合應用
編寫 閱讀程式實現下屬功能 一 程式執行開始時顯示 0 賬號註冊 1 充值功能 2 閱讀 二 針對檔案db.txt,內容格式為 使用者名稱 密碼 金額 完成下述功能 2.1 賬號註冊 2.2 充值功能 三 檔案story class.txt存放類別與 檔案路徑,如下,讀出來後可用eval反解出字典 ...