关于django_stubs_ext:猴子补丁是否应仅在TYPE_CHECKING时执行?
django_stubs_ext.monkeypatch() 是否需要包裹在TYPE_CHECKING条件中?
结论是:完全应该,你给出的示例代码写法是正确的。
原因如下:
- django_stubs_ext本质是为类型检查工具(比如mypy)服务的,它的
monkeypatch()只会给Django对象补充类型提示相关的补丁,这些补丁对程序的实际运行逻辑没有任何作用。 TYPE_CHECKING是Python typing模块提供的常量,仅在类型检查阶段会被判定为True,程序运行时这段代码根本不会执行,能避免不必要的运行时开销,也不会引入潜在的兼容性问题。- 如果不包裹在
TYPE_CHECKING里,每次程序启动都会执行这段无意义的monkey patch,纯粹是浪费资源。
例外情况:如果你的项目有特殊需求,确实需要django_stubs_ext的运行时补丁(这种场景非常罕见),那可以去掉条件判断,但绝大多数Django项目都不需要这么做。
内容的提问来源于stack exchange,提问作者fabien-michel
相关产品推荐
相关产品推荐

