Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将导入的模块或函数表示为字符串?_Python - Fatal编程技术网

Python 如何将导入的模块或函数表示为字符串?

Python 如何将导入的模块或函数表示为字符串?,python,Python,我有一个程序,它运行在一个对象数据库中,通过一个长时间运行的函数运行每个对象,然后获取该函数的输出来更新所述对象的属性。当然,如果函数将返回相同的结果(因为函数的代码没有更改),那么我们不需要再次在函数中运行它 解决此问题的一种方法是为函数提供一个版本号或其他内容,并根据存储在对象中的版本号检查版本号。例如,object.lastchecked=='VER2'。但这需要手动更新版本并记住这样做 另一种更具创造性的方法是将整个函数甚至导入的模块/库转换为字符串,对字符串进行散列,然后将其用作排序的

我有一个程序,它运行在一个对象数据库中,通过一个长时间运行的函数运行每个对象,然后获取该函数的输出来更新所述对象的属性。当然,如果函数将返回相同的结果(因为函数的代码没有更改),那么我们不需要再次在函数中运行它

解决此问题的一种方法是为函数提供一个版本号或其他内容,并根据存储在对象中的版本号检查版本号。例如,object.lastchecked=='VER2'。但这需要手动更新版本并记住这样做

另一种更具创造性的方法是将整个函数甚至导入的模块/库转换为字符串,对字符串进行散列,然后将其用作排序的“自动”版本号。所以如果objects.last被选中=hash(functionconvertedtostring),我们将运行函数(object)

我搞不懂的是如何将现有python模块从导入行转换为字符串。我可以硬编码这个模块的路径并读取文件,但它已经被读取到内存中一次了。我如何访问它

例如:

from hugelibrary import littlefunction
for id,object in hugeobjectdb.items():
     if object.lastchecked!=hash(littlefunction):
             object.attributes=littlefunction(object)

至少有两种不同的方法可以做到这一点

首先,如果您使用某种版本控制来处理代码,那么您可能能够将模块文件中有关模块版本的信息存储在python可以访问并自动更新的对象中。也可以使用版本控制工具获取当前版本

但是,在功能级别上,而不是在文件级别上,可能很难做到这一点。如果是具有此要求的单个函数,则可以考虑将其移动到单独的文件。

最好是获取函数的文本。因此,这个答案似乎起到了作用