应用:想象一下金融分析师,快速编写 Python 代码片段,并能够使用方便的金融函数和共享变量,而无需进行任何导入、定义函数或做任何事情。只是他们想要编写的代码的平面源文件,没有别的。
我几乎可以到达那里,通过动态加载源文件作为模块(简单),并将我的函数+变量作为属性添加到加载的模块(更容易)。问题是加载模块会导致模块执行,这为时过早。未定义函数等
Python 3.x 和 PEP 402 引入了模块规范create_module
和exec_module
函数。创建模块,添加属性,然后执行。完美的。除了create_module
被允许返回None
。并浏览 3.5 importlib.abc
、.util
、 和代码, return.machinery
的所有实现。create_module
None
所以我想知道我是否必须编写自己的加载器,和/或导入器,和/或其他东西。顺便说一句,我喜欢添加到模块,而不是添加到builtins
,但如果builtins
有效并且是我唯一的选择,我会这样做。
谢谢!