代码之家  ›  专栏  ›  技术社区  ›  Mark Harrison

自动生成Python类型注释?

  •  22
  • Mark Harrison  · 技术社区  · 8 年前

    我正在改造一些旧的Python代码,以添加PyType注释。我是机械地这样做的,在每个函数的顶部添加打印语句

    def f(a, b):
        print("type a:", type(a))
        print("type b:", type(b))
    

    并进行相应的更新。

    有什么可以帮助自动化这个过程吗?

    1 回复  |  直到 8 年前
        1
  •  33
  •   mic Sooth    6 年前

    当然,有一些项目可以提供帮助。

    • Instagram开发了 MonkeyType tool 获取运行时类型信息。这些文件作为存根文件输出,但您可以使用其中包含的工具将其作为内联注释应用于源文件,或者使用 retype project 做同样的事。
    • Dropbox有一个类似的工具,名为 pyannotate ; 该工具可以生成Python2类型的提示注释或注释。

    两个项目都不会产生完美的类型提示;始终将其输出作为起点,而不是权威的最终注释。引用 猴子型 自述:

    使用MonkeyType,可以很容易地添加反映运行时使用的具体类型的注释,但这些注释可能并不总是与函数的全部预期功能相匹配。例如,add能够处理比整数更多的类型。类似地,MonkeyType可能会生成一个具体的列表注释,其中抽象序列或Iterable更合适。MonkeyType的注释是信息丰富的初稿,由开发人员检查和更正。

    但是一定要阅读 Instagram engineering blog post on MonkeyType ; 它有助于向Instagram代码库添加类型注释。

    免责声明 :MonkeyType和retype都是Facebook同事的项目。我自己对这些工具没有任何投入。

    推荐文章