我有一个包含字符串格式的 python 函数的文本文件。我的代码从文本文件中读取每个函数,为其提供适当的输入,然后运行它。要从文本文件运行函数字符串(例如
fun_str
),我在我的代码中使用以下代码片段:
dict = {}
exec(fun_str, globals(), dict)
f, = dict.values()
f()
只要每个函数字符串都具有 python 标准语法(在缩进、换行等方面),代码就可以正常运行。但是,如果代码读取函数字符串,例如:
"def fun(list): output_list = [] for i in list: if i not in output_list: output_list.append(i) return output_list"
(全部在一行中)
然后
SyntaxError: invalid syntax
在^^^
下用for
提出。
是否有任何内置模块或任何方法来修复函数字符串,使其在由
exec
运行之前遵循标准语法?
如果你使用一些 python 代码并删除所有换行符,则不一定可以转换回原始代码。
例如:
def f(x): if x == None: return doSomething(x)
可能意味着:
def f(x):
if x == None:
return doSomething(x)
或
def f(x):
if x == None:
return
doSomething(x)
所以这是不可能的,除非你知道一些关于那个代码的东西,可以让你明确地将它转换回它的原始含义。