Python EOL错误,错误在哪里?

Python EOL错误,错误在哪里?,python,python-3.x,eol,Python,Python 3.x,Eol,我试图让pyton执行这个,但它一直显示EOL err,这里的错误在哪里 exec("a = \"def f(s):\n try:\n exec(s)\n except: Exception\n print('Error')\"\nb = \"while True: f(input(''))\"\nexec(a)\nexec(b)") 这段代码是我试图将这两个exec行合并为1的结果,也许有更好的方法,有这两个exec行: exec("def f(s):\n try:\n exec(s)\

我试图让pyton执行这个,但它一直显示EOL err,这里的错误在哪里

exec("a = \"def f(s):\n try:\n  exec(s)\n except: Exception\n print('Error')\"\nb = \"while True: f(input(''))\"\nexec(a)\nexec(b)")
这段代码是我试图将这两个exec行合并为1的结果,也许有更好的方法,有这两个exec行:

exec("def f(s):\n try:\n  exec(s)\n except: Exception\n print('Error')")
exec("while True: f(input(''))")
从Python的角度看,您正在尝试做什么。但从技术上讲,代码中有一个多行字符串文字,必须用三个引号括起来:

exec("a = '''def f(s):\n try:\n  exec(s)\n except: Exception\n print('Error')'''\nb = \"while True: f(input(''))\"\nexec(a)\nexec(b)")
使用字符串的代码中还有一些其他错误。

从Python角度看,您正在尝试执行的操作。但从技术上讲,代码中有一个多行字符串文字,必须用三个引号括起来:

exec("a = '''def f(s):\n try:\n  exec(s)\n except: Exception\n print('Error')'''\nb = \"while True: f(input(''))\"\nexec(a)\nexec(b)")

使用字符串的代码中还存在一些其他错误。

如果有必要这样做,可能最好逐段构建AST,而不是将其作为一个完整的字符串执行。为什么需要对其进行
exec
ed而不是硬编码?程序永远不应该执行输入的代码,简单的输入错误可能会导致灾难性的结果。如果这种事情是必要的,那么可能最好逐段构建AST,而不是将其作为一个完整的字符串来执行。为什么这需要
exec
ed而不是硬编码?程序不应该执行输入的代码,简单的输入错误会导致灾难性的结果。