>> import sympy.utilities.lambdify >>> sympy.utilities.lambdify 等等,sympy.utili-6ren">
gpt4 book ai didi

python - 如何强制 Python 的 "import"将名称视为模块而不是函数?

转载 作者:太空狗 更新时间:2023-10-30 02:27:24 24 4
gpt4 key购买 nike

我正在使用 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 module 而不是 function

(我只是在这里使用 SymPy 进行说明。这是否是正确的库使用无关紧要。来源是 here。)

最佳答案

实际上,这看起来可以用 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)

虽然这对我来说看起来有点长而且不太清楚。

关于python - 如何强制 Python 的 "import"将名称视为模块而不是函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41214303/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com