为什么这段代码会出错:RuntimeError: maximum recursion depth exceeded during compilation?print_test从不调用自己,因此我认为它不是一个递归函数.
def print_test():
print("test")
return print_test
print_test() #prints 'test'
print()
#a quick way of writing "print_test()()()()()()()()()()()()()..."
eval("print_test"+"()"*10000) #should print 'test' 10000 times
Run Code Online (Sandbox Code Playgroud)
当我测试它时,它在Python 2.7.7rc1中工作但在Python 3.3.5中给出了错误.Pdb给出一个短调用堆栈,不同于超过最大递归深度时通常存在的高调用堆栈.
Traceback (most recent call last):
File "/usr/lib/python3.3/pdb.py", line 1662, in main
pdb._runscript(mainpyfile)
File "/usr/lib/python3.3/pdb.py", line 1543, in _runscript
self.run(statement)
File "/usr/lib/python3.3/bdb.py", line 405, in run
exec(cmd, globals, locals)
File "<string>", line 1, in <module>
File "/home/beet/overflow.py", line 1, in <module>
def print_test():
Run Code Online (Sandbox Code Playgroud)
我出于好奇而想知道这一点,并意识到这不是最好的编程实践.