如何像 Python 中的函数一样退出 exec()

问题描述 投票:0回答:1

我目前正在尝试用 Python 制作一个自修改算法。

为此,我有一个包含算法的字符串,我使用另一个函数中的 exec(algorithm) 函数运行该算法。

我想要运行的算法如下所示:

   if (a):
       do_something()
       return
   if (b):
       do_something_else()
       return
   ...


问题是“exec()”不像一个函数,所以“return”不会这样工作。

当然,当我将算法字符串修改为:

def function ():

  if (a):
        do_something()
        return
  if (b):
        do_something_else()
        return
    ...

function()

但我想要的是在exec()中替换“return”的关键字。 只退出 exec() 的关键字(不是整个程序),如果它存在

python function exec keyword
1个回答
0
投票

您可以使用 sys.exit() 函数从 exec() 函数中退出,而无需终止整个程序。您只需要捕获 sys.exit() 引发的 SystemExit 异常并适当地处理它。

导入系统

def run_algorithm(算法): 尝试: 执行(算法) 除了系统出口: 通过

算法 = ''' 如果一个: print("a 为真") 系统退出() 如果乙: print("b 为真") 系统退出() '''

run_algorithm(算法)

© www.soinside.com 2019 - 2024. All rights reserved.