找回密码
 立即注册
首页 业界区 安全 实现一个python依赖注入demo,为了开发框架做准备 ...

实现一个python依赖注入demo,为了开发框架做准备

翁真如 2025-6-26 20:38:06
本文使用python实现一个依赖注入的框架的demo,实现了拆分数据实体和逻辑实体部分
一、动机::为什么要写一个python的依赖注入框架?这不是多此一举吗???

是,但也不完全是。
例如,在fastapi中就可以使用依赖注入来完成功能
这是一部分来自fastapi官方文档的代码
  1. from typing import Union
  2. from fastapi import Depends, FastAPI
  3. app = FastAPI()
  4. async def common_parameters(
  5.     q: Union[str, None] = None, skip: int = 0, limit: int = 100
  6. ):
  7.     return {"q": q, "skip": skip, "limit": limit}
  8. @app.get("/items/")
  9. async def read_items(commons: dict = Depends(common_parameters)):
  10.     return commons
  11. @app.get("/users/")
  12. async def read_users(commons: dict = Depends(common_parameters)):
  13.     return commons
复制代码
在这部分代码中通过Depends将一个异步函数注入到路径操作函数,当然这段代码肯定很多人有疑问———为什么不直接在代码内调用对应函数.
  1. @app.get("/items/")
  2. async def read_items():
  3.     return await common_parameters()
复制代码
直接 await common_parameters() 不就完事了, 为什么要搞这么多令人疑惑的东西。
如果仅仅是处理代码相关的依赖,用函数也可以实现依赖关系。
但是,
你实现函数调用的方法千千万,fastapi作为一个框架该如何定位依赖关系呢?,如果无法定位依赖关系,那么它就无法给你提供文档化以及各种缓存的服务。
依赖注入框架的意义其实就是通过一种标准化的依赖方案理清组件与组件之间的关系,从而为框架的建设铺路
  1. 其实,有看过spring框架,dotnetCore框架的设计的,应该对此都不陌生。
复制代码
话由说回来了,我要实现一个依赖注入框架的原因其实就是我想试着自己实现一个python编程框架。名字我都想好了
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册