在Python中使用字符串导入

2024-05-06 09:13:00 发布

您现在位置:Python中文网/ 问答频道 /正文

短版:

假设我有一个字符串str和一个文件functions.py,我想从中导入一个名称存储在str中的方法。在

我该怎么做?我想要点像:

from functions.py import str

但是让str求值,不要导入方法“str”(它不存在)。在

经过几次谷歌搜索,我几乎(我希望)达到了:

^{pr2}$

提前谢谢。在

编辑:TMI。在


Tags: 文件方法字符串frompyimport名称编辑
3条回答

如果您的目标是通过只导入所需的函数来节省内存,请不要费心;即使您使用了from ... import ...构造,Python仍然导入整个模块,只是它只将您显式请求的那些成员添加到当前字典中(其他成员仍在内存中,只是它们不能直接访问)。在

有鉴于此,我会按照以下思路做些事情:

import functions
the_name = self.name.lower() + str(i)
the_func = getattr(functions, the_name)

getattr方法提供给定对象的属性。由于全局函数是它们所在模块的属性,因此可以使用以下方法:

import functions

funcName = 'doSomething'
f = getattr(functions, funcName)
f(123)

不需要使用__import__,因为这通常只在您事先不知道模块名称的情况下才需要。在

假设您将模块导入_tmp的代码正常工作,那么最后一步就是:

func = getattr(_tmp, func_name)

相关问题 更多 >