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

Python运行报TypeError: 'type' object is not subscriptable修复方法

报错原因

报错由函数定义处的返回值类型注解list[str]触发。
Python 3.9版本才正式落地PEP 585规范,支持直接对list/dict/tuple这类内置容器类型使用下标写法编写泛型类型注解。如果你的运行环境是Python 3.8或更早版本,内置list本身是普通类型对象,不支持[]下标语法做类型标注,函数定义阶段解析注解时就会抛出'type' object is not subscriptable错误,和函数内部的逻辑实现没有关系。

修复方案

根据自己的运行环境选任意一种即可:

  • 升级Python解释器到3.9及以上版本
    升级后原生支持list[str]这类泛型注解写法,现有代码无需任何修改就能正常运行。
  • 启用延迟注解求值(适用Python 3.7及以上版本)
    在当前Python文件的最顶部添加一行导入:
    from __future__ import annotations
    
    该导入会让文件内所有类型注解不在运行时解析,仅作为静态类型提示存在,不会触发下标解析错误,同时完全兼容mypy、pyright等主流类型检查工具的校验逻辑。
  • 使用typing模块的兼容泛型类型(全Python3版本通用)
    从标准库typing模块导入大写开头的泛型类型替换内置类型即可,修改后代码如下:
    from typing import List
    
    def inputs_string_to_list(inputs_string: str) -> List[str]:
        """
        Convert a string with comma-separated items into a list of strings.
        :param inputs_string: a string with comma-separated items
        :return: list of strings
        """
        return [input_.strip() for input_ in inputs_string.split(",")]
    
    这种写法在Python 3.9+版本中也依然被支持,不会出现兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:21:28