You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中from typing import List与from ast import List的区别

typing.List 与 ast.List 的核心区别

这两个List属于Python完全不同领域的工具,用途和语法逻辑没有任何重叠:

1. from typing import List:类型提示的泛型标记

  • 作用:用于静态类型注解,告诉类型检查工具(如mypy)某个变量、函数参数或返回值是列表类型,[]里的内容用来指定列表的元素类型,比如def func(arr: List[str]) -> None:表示arr是一个字符串列表。
  • 语法逻辑:它是泛型类型的标记,[]是泛型参数的写法,用来声明列表的元素类型。Python运行时会忽略这个注解,只在静态检查阶段生效。
  • 注意:Python 3.9+已经支持直接用list[]替代typing.List,比如list[str]和List[str]等效。

2. from ast import List:抽象语法树的节点类

  • 作用:属于Python的语法分析工具链,用来表示Python代码中「列表字面量」对应的抽象语法树(AST)节点。比如你写的[1, 2, 3]这段代码,在AST里就会被解析成一个List节点对象。
  • 语法逻辑:它是一个类,需要用List()调用构造函数来创建AST节点实例,构造时需要传入elts参数(列表元素对应的AST节点列表),比如:
    from ast import List, Constant
    # 对应代码里的 [1, "hello"]
    list_node = List(elts=[Constant(value=1), Constant(value="hello")])
    

简单来说,一个是给类型检查工具看的「类型标记」,一个是用来构建/分析Python代码语法树的「节点类」,两者没有任何关联,只是名字碰巧一样而已。

内容的提问来源于stack exchange,提问作者Stack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 07:31:19