Python 如何将导入的模块或函数表示为字符串?
我有一个程序,它运行在一个对象数据库中,通过一个长时间运行的函数运行每个对象,然后获取该函数的输出来更新所述对象的属性。当然,如果函数将返回相同的结果(因为函数的代码没有更改),那么我们不需要再次在函数中运行它 解决此问题的一种方法是为函数提供一个版本号或其他内容,并根据存储在对象中的版本号检查版本号。例如,object.lastchecked=='VER2'。但这需要手动更新版本并记住这样做 另一种更具创造性的方法是将整个函数甚至导入的模块/库转换为字符串,对字符串进行散列,然后将其用作排序的“自动”版本号。所以如果objects.last被选中=hash(functionconvertedtostring),我们将运行函数(object) 我搞不懂的是如何将现有python模块从导入行转换为字符串。我可以硬编码这个模块的路径并读取文件,但它已经被读取到内存中一次了。我如何访问它 例如:Python 如何将导入的模块或函数表示为字符串?,python,Python,我有一个程序,它运行在一个对象数据库中,通过一个长时间运行的函数运行每个对象,然后获取该函数的输出来更新所述对象的属性。当然,如果函数将返回相同的结果(因为函数的代码没有更改),那么我们不需要再次在函数中运行它 解决此问题的一种方法是为函数提供一个版本号或其他内容,并根据存储在对象中的版本号检查版本号。例如,object.lastchecked=='VER2'。但这需要手动更新版本并记住这样做 另一种更具创造性的方法是将整个函数甚至导入的模块/库转换为字符串,对字符串进行散列,然后将其用作排序的
from hugelibrary import littlefunction
for id,object in hugeobjectdb.items():
if object.lastchecked!=hash(littlefunction):
object.attributes=littlefunction(object)
至少有两种不同的方法可以做到这一点 首先,如果您使用某种版本控制来处理代码,那么您可能能够将模块文件中有关模块版本的信息存储在python可以访问并自动更新的对象中。也可以使用版本控制工具获取当前版本 但是,在功能级别上,而不是在文件级别上,可能很难做到这一点。如果是具有此要求的单个函数,则可以考虑将其移动到单独的文件。 最好是获取函数的文本。因此,这个答案似乎起到了作用