Python:如何动态生成代码?

时间:2010-10-20 03:34:51

标签: python

我遇到了问题,我必须动态生成程序然后执行它。 我们怎么能这样做?

4 个答案:

答案 0 :(得分:6)

您可以使用eval()函数从字符串

执行代码

一个例子是:

import math

test=r"dir(math)"

eval(test)

输出

['__doc__', '__name__', '__package__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'exp', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'hypot', 'isinf', 'isnan', 'ldexp', 'log', 'log10', 'log1p', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']

然而,使用eval是非常不安全的,我建议你通过using eval() safely

答案 1 :(得分:3)

聪明的方式:metapython - http://metapython.org/

非常嘲笑且不受人们普遍尊重的方式:eval() - http://docs.python.org/library/functions.html

为什么你要这样做,请问?

答案 2 :(得分:2)

如果你的意思是解释器,只需从命令行输入'python'即可。

答案 3 :(得分:2)

如果您只需要评估表达式或某些python代码,请使用evalliteral_eval取决于您的要求......

如果需要生成.py文件,可能需要代码生成器,这里是基本代码生成器:http://effbot.org/zone/python-code-generator.htm 然后您可以使用execfile

执行代码