Python 3.10中reveal_type的运行时正确使用方法
如何在Python 3.10中正确使用reveal_type?
首先要明确:reveal_type不是Python的内置运行时函数,它是Mypy这类静态类型检查器专属的调试工具,仅用于静态类型分析阶段,不能直接用Python解释器运行包含它的代码。
正确使用方式:
用类型检查器分析代码:
不要直接用python your_script.py运行代码,而是通过Mypy执行静态分析。比如在终端输入:mypy your_script.pyMypy会扫描代码,输出
reveal_type(x)的类型结果(比如针对示例代码会输出Revealed type is "builtins.int"),全程不会执行代码的运行时逻辑,自然不会触发NameError。临时兼容运行时(可选):
如果需要让代码既能通过Mypy分析,又能被Python解释器正常运行,可以在代码顶部添加一个空实现的reveal_type函数:def reveal_type(obj: object) -> None: pass def f(): x = 123 reveal_type(x)Mypy在分析时会优先识别自身的伪函数,忽略这个自定义实现;而Python运行时调用这个空函数不会报错。
为什么在线Mypy环境可以正常执行?
因为在线Mypy环境仅做静态类型检查,不会真正启动Python解释器运行代码,所以不会触发reveal_type未定义的错误。
内容的提问来源于stack exchange,提问作者Max Koretskyi
相关产品推荐
相关产品推荐

