首页 > 编程语言 >RecursionError: maximum recursion depth exceeded while calling a Python object

RecursionError: maximum recursion depth exceeded while calling a Python object

时间:2022-11-27 20:44:33浏览次数:45  
标签:调用 递归 Python recursion object 默认 sys 深度

原因分析:
Python默认递归调用深度为1000(即最多递归调用1000次),而程序在运行过程中超过最大的递归深度。

为什么最大递归深度要有限制呢?
本质上讲,在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。
在递归调用中,每个函数在调用自己的时候 还没有退出,调用多了肯定会导致内存崩溃,因此需要对递归深度进行限制。

解决方法(一):
检查递归代码中是否有结束条件,避免死循环,以及递归结束条件是否合理。

解决方法(二):
修改默认的递归深度

import sys # 导入sys模块
sys.setrecursionlimit(3000) # 将默认的递归深度修改为3000

  这个方法虽然也能解决问题,但是治标不治本,规范代码是最重要的。

标签:调用,递归,Python,recursion,object,默认,sys,深度
From: https://www.cnblogs.com/shclbear/p/16930571.html

相关文章

  • python中强制关闭线程、协程、进程方法
    前言python使用中多线程、多进程、多协程使用是比较常见的。那么如果在多线程等的使用,我们这个时候我们想从外部强制杀掉该线程请问如何操作?下面我就分享一下我的执行看......
  • PYTHON 变量
    1.1变量一般编译语言要求变量在使用前:定义名称定义数据类型python不需要设定,它会针对变量的内容自行设定数据类型。1.2变量的命名规则由英文字母,数字,下划线,中文......
  • python学习第八周总结
    多进程实现TCP服务端并发之前我们学习了用socket模块进行文字以及文件的传输,但是之前的操作一个服务端只能与一个客户端进行交互,如果要想实现多个客户端与服务端交互的......
  • Python基础补充——python基础语法
    学习Python3基础语法|菜鸟教程(runoob.com)只是个人笔记,没有原创内容注释Python中单行注释以 # 开头;多行注释可以用多个 # 号,还有''''''和""""""'''zhushi......
  • PYTHON 注释
    1.1单行注释#注释内容单独一行:#这是一个helloworld输出程序print("Helloworld!")放在行尾:print("Helloworld")#输出Helloworld1.2带字符编码的注释这......
  • Python对豆瓣电影Top250并进行数据分析并可视化
    数据获取翻页操作观察可知,我们只需要修改start参数即可headers字段headers中有很多字段,这些字段都有可能会被对方服务器拿过来进行判断是否为爬虫通过headers中的User-A......
  • Python: 对程序做性能分析及计时统计
    1.对整个程序的性能分析如果只是想简单地对整个程序做计算统计,通常使用UNIX下的time命令就足够了。(base)➜Learn-Pythontimepythonsomeprogram.pypython......
  • Basler的python库安装(windows)
    Basler官方的python支持放到了GitHub上,GitHub-basler/pypylon:TheofficialpythonwrapperforthepylonCameraSoftwareSuite截止到2022.11.27日,支持到python3.1......
  • Python time sleep()方法
    描述Pythontimesleep(secs)函数推迟调用线程的运行,可通过参数secs指秒数,表示进程挂起的时间。语法sleep()方法语法:time.sleep(t)参数t--推迟执行的秒数。返回......
  • Python 打开和读取文件的方式
    这是一篇介绍python读取文件的几种方式文章一、打开和读取文件的方式"""打开文件的方式可以使用f=open(path,'r')f.close()来打开和关闭文件或者使用withopen(fi......