You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何修复Python中的RecursionError: maximum recursion depth exceeded错误——以import_zip_codes_json函数为例

如何修复Python中的RecursionError错误?

嗨,我看到你遇到了递归报错的问题,其实这个问题的根源不是递归深度不够,而是函数内部出现了无限递归,咱们一步步来解决:

问题根源分析

你写的函数import_zip_codes_json里有这一行:

zip_codes_json = import_zip_codes_json()

这意味着每次调用这个函数,它都会立刻再次调用自己,完全没有终止的条件——就像一个人一直在重复说“我要调用我自己”,永远停不下来。不管你把递归深度设得多大,最终都会因为无限循环触发RecursionError,因为这是逻辑错误,不是深度不够的问题。

修复方案

你之前写的读取JSON文件的代码是正确的,只是没有把它放到函数内部。正确的做法是把读取文件、加载JSON的逻辑放进函数里,替换掉那行错误的递归调用:

完整的正确代码

import json

def import_zip_codes_json() -> list:
    # 打开并读取zip_codes.json文件
    # 注意:不要用list作为变量名,它是Python内置类型,会覆盖原有功能
    with open('zip_codes.json') as file:
        zip_codes_json = json.load(file)
    return zip_codes_json

# 测试一下
if __name__ == "__main__":
    result = import_zip_codes_json()
    print(type(result))  # 会输出 <class 'list'>,符合预期

额外提示

  • 避免使用Python的内置名称(比如liststrdict)作为变量名,否则可能会导致后续代码出现奇怪的错误。
  • 你之前尝试用sys.setrecursionlimit()来解决问题,这个方法只适用于合法的递归场景(比如递归遍历树结构时深度确实超过默认上限),但对于无限递归完全无效,因为递归永远不会终止。

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

火山引擎 最新活动