2024-05-06 09:13:00 发布
网友
短版:
假设我有一个字符串str和一个文件functions.py,我想从中导入一个名称存储在str中的方法。在
str
functions.py
我该怎么做?我想要点像:
from functions.py import str
但是让str求值,不要导入方法“str”(它不存在)。在
经过几次谷歌搜索,我几乎(我希望)达到了:
提前谢谢。在
编辑:TMI。在
如果您的目标是通过只导入所需的函数来节省内存,请不要费心;即使您使用了from ... import ...构造,Python仍然导入整个模块,只是它只将您显式请求的那些成员添加到当前字典中(其他成员仍在内存中,只是它们不能直接访问)。在
from ... import ...
有鉴于此,我会按照以下思路做些事情:
import functions the_name = self.name.lower() + str(i) the_func = getattr(functions, the_name)
getattr方法提供给定对象的属性。由于全局函数是它们所在模块的属性,因此可以使用以下方法:
getattr
import functions funcName = 'doSomething' f = getattr(functions, funcName) f(123)
不需要使用__import__,因为这通常只在您事先不知道模块名称的情况下才需要。在
__import__
假设您将模块导入_tmp的代码正常工作,那么最后一步就是:
_tmp
func = getattr(_tmp, func_name)
如果您的目标是通过只导入所需的函数来节省内存,请不要费心;即使您使用了
from ... import ...
构造,Python仍然导入整个模块,只是它只将您显式请求的那些成员添加到当前字典中(其他成员仍在内存中,只是它们不能直接访问)。在有鉴于此,我会按照以下思路做些事情:
getattr
方法提供给定对象的属性。由于全局函数是它们所在模块的属性,因此可以使用以下方法:不需要使用
__import__
,因为这通常只在您事先不知道模块名称的情况下才需要。在假设您将模块导入
_tmp
的代码正常工作,那么最后一步就是:相关问题 更多 >
编程相关推荐