在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)