智伤帝的个人博客

智伤帝

马上订阅 智伤帝的个人博客 RSS 更新: https://blog.l0v0.com/atom.xml

Python dependencies 库

2022年3月28日 09:50

前言

  在 Java Spring Boot 等等的后端领域,会大量使用依赖注入的方式来简化复杂的设计模式。
  实现参数的自动化注入。
  这些设计方式在 Python 的世界里使用不多,因为 Python 语言足够灵活。
  倘若需要开发复杂的框架,使用 依赖注入 框架可以简化很多代码。

Github 地址
官方说明文档

依赖注入解决的问题

参考文章

  在日常开发中,我们的方法调用可能会越来越深。

1
2
3
4
5
6
7
8
9
10

def create_robot(robot_name):
create_robot_hand()

def create_robot_hand():
create_robot_finger()

def create_robot_finger():
print("create_robot_finger")

  上面是一个简单的机器人创建调用函数。
  调用方式会伴随则系统的复杂程度逐层深入。
  到了 create_robot_finger 深度的时候,可能会需要在上层传入参数控制 finger 的数量

1
2
3
4
5
6
7
8
9

def create_robot(robot_name,finger_num=10):
create_robot_hand(finger_num=finger_num)

def create_robot_hand(finger_num=10):
create_robot_finger(finger_num=finger_num)

def create_robot_finger(finger_num=10):
print("create_robot_finger finder_number:{0}".format(finger_num))

  这需要将参数补充到 调用链条 的每一个函数当中。
  如果只是上面的 三层 调用深度,那可能手动修改维护还不是什么问题。
  但倘若调用深度很深,那这个代码修改量就会非常庞大。
  不利于代码的扩展和维护。


  在 Python 的世界里,解决这个问题的方法有很多。

  1. 导入 配置 模块,外部获取参数配置
  2. 面向对象 注入依赖,从实例化中获取参数配置

方案一 导入模块

1
2
3
4
5
6
7
8
"""settings.py"""

from...

剩余内容已隐藏

查看完整文章以阅读更多