Python:如何动态生成代码?

2 投票
4 回答
4472 浏览
提问于 2025-04-16 05:46

我遇到一个问题,我需要动态生成程序代码,然后执行它。我们该怎么做呢?

4 个回答

3

聪明的做法是使用 metapython,网址是 http://metapython.org/

被很多人嘲笑且不太受尊重的做法是使用 eval(),你可以在这里了解更多:http://docs.python.org/library/functions.html

请问你为什么想这么做呢?

4

如果你只是想计算一些表达式或者运行一些Python代码,可以使用 eval 或者 literal_eval,具体用哪个要看你的需求...

如果你需要生成 .py 文件,那你可能需要一个代码生成器,这里有一个基本的代码生成器:http://effbot.org/zone/python-code-generator.htm,然后你可以用 execfile 来执行你的代码。

8

你可以使用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是非常不安全的,我建议你查看一下如何安全地使用eval()

撰写回答