Python利用裝飾器實現(xiàn)類似于flask路由
1.例子1
def f1():
print(1111)
def f2():
print(2222)
if __name__ == '__main__':
print(33)
打印結(jié)果:
33
在例子1中,f1() 與f2() 都沒有被調(diào)用,只執(zhí)行了print(33)
f1與f2,是沒有被調(diào)用的,但是如果f1 和 f2 上面有注解,就會被調(diào)用執(zhí)行。
2.python 利用裝飾器實現(xiàn)類似于flask路由
注釋類 Grass
# -*- coding:utf-8 -*-
# @Author: 喵醬
# @time: 2023 - 02 -21
# @File: grass.py
from types import FunctionType
class Grass(object):
# 字典,key 是 用戶輸入的路由
# value,是調(diào)用對應(yīng)的函數(shù)
url_map = {}
def router(self,url):
def decorator(f: FunctionType):
self.add_url_to_map(url,f)
# return f
return decorator
# f 指的是一個函數(shù)
def add_url_to_map(self,url,f):
self.url_map[url] = f
def run(self):
while True:
url = input("請輸入URL: ")
try:
print(self.url_map[url]())
except Exception as e:
print(404)
print(e)
運行入口
# -*- coding:utf-8 -*-
# @Author: 喵醬
# @time: 2023 - 02 -21
# @File: blog.py
from grass import Grass
app = Grass()
@app.router("/home")
def home():
print("歡迎來到首頁")
return "首頁"
@app.router("/index")
def index():
print("歡迎來到列表頁")
return "列表頁"
if __name__ == '__main__':
app.run()
運行app.run()
然后輸入 :
/home
/index
/mine

分析實現(xiàn)邏輯:
當(dāng)運行app.run() 時,代碼運行邏輯是
1、先執(zhí)行1 實例化Grass對象
2、裝飾器@app.router("/home") 運行
3、裝飾器@app.router("/index") 運行
4、最后才是app.run() 運行

裝飾器@app.router("/home") 運行邏輯

裝飾器@app.router("/home"),運行
@app.router("/home") 對應(yīng) def router(self,url):
1、“/home” 傳給 def router(self,url),url =“/home”
2、@app.router("/home"),運行得到 decorator函數(shù)
3、然后將home函數(shù)作為參數(shù),傳遞給decorator函數(shù)
4、self.add_url_to_map(url,f)
將 url(“/home”) 與 home 函數(shù)組成 字典。
在字典中,字符串 /home 對應(yīng)home 函數(shù)
以上就是Python利用裝飾器實現(xiàn)類似于flask路由的詳細(xì)內(nèi)容,更多關(guān)于Python裝飾器實現(xiàn)flask路由的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python實現(xiàn)四舍五入的兩個方法總結(jié)
這篇文章主要介紹了python中實現(xiàn)四舍五入的兩種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-09-09
python 裝飾器帶參數(shù)和不帶參數(shù)步驟詳解
裝飾器是Python語言中一種特殊的語法,用于在不修改原函數(shù)代碼的情況下,為函數(shù)添加額外的功能或修改函數(shù)的行為,這篇文章主要介紹了python裝飾器帶參數(shù)和不帶參數(shù)的相關(guān)知識,需要的朋友可以參考下2024-05-05
對pytorch的函數(shù)中的group參數(shù)的作用介紹
今天小編就為大家分享一篇對pytorch的函數(shù)中的group參數(shù)的作用介紹,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
解決安裝torch后,torch.cuda.is_available()結(jié)果為false的問題
這篇文章主要介紹了解決安裝torch后,torch.cuda.is_available()結(jié)果為false的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12
python使用xlrd和xlwt讀寫Excel文件的實例代碼
這篇文章主要介紹了python使用xlrd和xlwt讀寫Excel文件的實例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-09-09
python中的selenium實現(xiàn)自動向下滾動頁面并指定最大滑動距離
這篇文章主要介紹了python中的selenium實現(xiàn)自動向下滾動頁面并指定最大滑動距離,下文有關(guān)selenium的資料介紹有一定的參考價值,需要的小伙伴可以參考一下2022-02-02

