【发布时间】:2016-11-04 23:07:39
【问题描述】:
在偶然发现this question 之后,我一直在玩弄 exec() 以更好地了解它是如何工作的。我试图让脚本的这种可憎性增加全局变量,读取自身,并使用新的全局值调用 exec 直到满足递归限制。我能想到的最好的方法是让一个文件声明全局,然后调用下一个文件(完全重复减去变量声明),然后递归调用自身。这是第一个的代码:
# recurse.py
def func():
global x
x += 1
with open('recurse2.py', 'r') as f:
try:
exec(f.read(), {'x': x})
except RecursionError:
print('maximum recursion depth reached at', x)
x = 0
func()
这是它执行的文件,它将自行执行:
# recurse2.py
def func():
global x
x += 1
with open('recurse2.py', 'r') as f:
try:
exec(f.read(), {'x': x})
except RecursionError:
print('maximum recursion depth reached at', x)
func()
只有一个文件可以达到同样的效果吗?
【问题讨论】:
标签: python python-3.x recursion global-variables