我知道有些人认为Python的exec
和eval
函数是邪恶的。我不介意。我有不同的问题。假设我有一个存储在字符串中的脚本,我想使用函数exec(my_script_as_string)
执行它。假设在脚本中的某个时刻,例如基于某些条件,我需要从该脚本返回。怎么做?命令return
不是为了这个。函数quit()不仅退出exec()
内的脚本,还退出调用exec
的外部脚本。 sys.exit
是一样的。那么......怎么做?甚至可能吗?
示例,不起作用:
print('A')
exec("print('B');quit();print('C')")
print('D')
我想要的输出是:
A
B
D
但它是
A
B
我知道脚本总是可以重新排列,以便有许多if / else子句可以消除提前退出的需要,但有时它会非常复杂,特别是当与循环结合时......
答案 0 :(得分:3)
一种选择是在exec
内创建一个随后调用的函数,这样就可以使用return
,例如:
exec("""
def _f():
print('B')
return
print('C')
_f()
""")