如何修复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的内置名称(比如
list、str、dict)作为变量名,否则可能会导致后续代码出现奇怪的错误。 - 你之前尝试用
sys.setrecursionlimit()来解决问题,这个方法只适用于合法的递归场景(比如递归遍历树结构时深度确实超过默认上限),但对于无限递归完全无效,因为递归永远不会终止。
内容的提问来源于stack exchange,提问作者Iris




