我的模块path = "..\blah\blah\myfolder\mymodule.py"包含:

print('hi')

代码执行:

exec(compile(open(path, 'rb').read(), path, 'exec'))

exec(open(path, 'rb').read())

给出同样的结果.

为什么需要compile()个?

推荐答案

它们在您的情况下是相同的,即,如果将字符串作为输入,则execeval使用compile.但是compile可以用来预编译将用exec(或eval)重复执行的代码,使它运行得更快,因为您不需要每次都编译代码.请考虑:

compiled_code = compile(open(path, 'rb').read(), path, 'exec')
for _ in range(10**9):
    exec(compiled_code)

Python相关问答推荐

仅使用2种 colored颜色 创建热图

sys.modulesgo 哪儿了?

如何在Python中按组应用简单的线性回归?

将从Python接收的原始字节图像数据转换为C++ Qt QIcon以显示在QStandardProject中

pyramid 内部数组中的连续序列-两极

如何使用Tkinter创建两个高度相同的框架(顶部和底部)?

实现的差异取决于计算出的表达是直接返回还是首先存储在变量中然后返回

Image Font生成带有条形码Code 128的条形码时出现枕头错误OSErsor:无法打开资源

通过仅导入pandas来在for循环中进行多情节

将DF中的名称与另一DF拆分并匹配并返回匹配的公司

需要计算60,000个坐标之间的距离

如何过滤包含2个指定子字符串的收件箱列名?

如何使用它?

递归访问嵌套字典中的元素值

python中的解释会在后台调用函数吗?

try 检索blob名称列表时出现错误填充错误""

使用Python查找、替换和调整PDF中的图像'

AES—256—CBC加密在Python和PHP中返回不同的结果,HELPPP

python panda ExcelWriter切换动态公式到数组公式

pysnmp—lextudio使用next()和getCmd()生成器导致TypeError:tuple对象不是迭代器''