在Python中使用字符串导入

在Python中使用字符串导入,python,Python,简短版本: 假设我有一个字符串str和一个文件functions.py,我想从中导入一个名称存储在str中的方法 我该怎么做呢?我想要一些像: from functions.py import str 但是,请对str进行求值,不要导入方法“str”(该方法不存在) 在谷歌搜索之后,我(我希望)接近了: func\u name=str _tmp=\uuuuu import\uuuu('functions.py',globals(),locals(),['func\u name'],-1) fu

简短版本:

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

我该怎么做呢?我想要一些像:

from functions.py import str
但是,请对str进行求值,不要导入方法“str”(该方法不存在)

在谷歌搜索之后,我(我希望)接近了:

func\u name=str
_tmp=\uuuuu import\uuuu('functions.py',globals(),locals(),['func\u name'],-1)
func=????
提前谢谢


编辑:TMI。

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

import functions

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

无需使用
\uuuu import\uuuu
,因为通常只有在您事先不知道模块名称时才需要使用

假设将模块导入
\u tmp
的代码起作用,那么最后一步就是:

func = getattr(_tmp, func_name)

如果你的目标是通过只导入你需要的函数来节省内存,那就不用麻烦了;即使您使用了来自的
。。。导入…
construct,Python仍然导入整个模块,只是它只向当前字典中添加您显式请求的成员(其他成员仍在内存中,只是无法直接访问)

考虑到这一点,我会按照以下思路做一些事情:

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

TypeError:“模块”对象不可用subscriptable@Mark啊,对。在一段时间没有使用该语言后,您会忘记一些细节。:)注意:您应该导入
函数
,而不是
函数.py
import functions
the_name = self.name.lower() + str(i)
the_func = getattr(functions, the_name)