New Usage of typing module in python

我原本想要分析一下 django webpack;但是写了一半,为了资料论述严谨,又不得不学习了 django component;在 django component 中,又发现了自己之前不知道的一些机制。无奈,先聊聊遇到的 typing 问题吧!

最近在阅读 django components 代码的时候,我在 component_registry.py 看到了这样一段代码:

  from typing import TYPE_CHECKING, Callable, Dict, Type, TypeVar
  if TYPE_CHECKING:
      from django_components import component
  _TC = TypeVar("_TC", bound=Type["component.Component"])

从中能学到几个知识点:

  1. TYPE_CHECKING 变量是用于程序员处理类型相关代码的 TAG,在实际运行的时候,内部代码不被执行;我们可以从 typing 的官方文档中找到。
  2. TypeVar 可以这样来用:
S = TypeVar('S', bound=str)  # Can be any subtype of str

在这段代码处,意味着 _TC 可以是任何一个 component.Componentsubtype

Conclusion

python 也在慢慢丰富自己的类型系统,许多新的用法也会慢慢地开发出来。不过相比之下,typescript 的类型系统要更先进一些。大家好好学!

附加一点吐槽:Component 居然是一个 django view,感觉很奇怪啊。


也可以看看