我正在使用SymPy,并遇到以下问题:
>>> import sympy.utilities.lambdify
>>> sympy.utilities.lambdify
<function lambdify at 0x0000000003802B38>
等等,不应该sympy.utilities.lambdify
是一个模块吗?
>>> from sympy.utilities.lambdify import implemented_function
>>> implemented_function
<function implemented_function at 0x0000000003802CF8>
>>> implemented_function.__module__
'sympy.utilities.lambdify'
哦,所以有一个命名冲突。
现在显然我可以使用implemented_function
,但这不是我的问题。
我的问题是:如何导入sympy.utilities.lambdify
模块而不是函数?
(我只是在这里用SymPy进行说明。这是否是正确的库用法不重要。来源在这里。)
实际上,看起来可以使用importlib完全干净地完成此操作:
import importlib
lamdify = importlib.import_module('sympy.utilities.lambdify')
print lambdify
<module 'sympy.utilities.lambdify' from 'c:\python-2.7.8-amd64\lib\site-packages\sympy\utilities\lambdify.pyc'>
编辑评论(感谢@Mehrdad):
或者,如果要避免将模块名称放在字符串中,可以执行以下操作:
def import_module(lambda_):
import importlib;
return importlib.import_module('.'.join(lambda_.__code__.co_names))
用法: lambdify = import_module(lambda: sympy.utilities.lambdify)
虽然这对我来说看起来更长一些,也不太清楚。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句