背景知识:第一次问SE问题。我对 Python 还很陌生,一般来说编程经验也不是很多。我四处搜寻,但没有找到这个问题的答案,非常感谢您的帮助。
我的问题是:如何导入与函数同名的模块?
具体来说,我正在使用 Python 符号数学库 sympy 0.7.5,使用 Python 2.7。
Sympy 的结构如下:
sympy
|
+-- __init__.py
+-- simplify
|
+-- __init__.py
+-- simplify.py
| |
| +-- def simplify(...)
|
+-- fu.py
|
+-- def TR8(...)
+-- def fu(...)
我想做的是从这个结构导入 fu.py,这样我就可以调用 TR8 函数。然而,我的运气并不好。
这有效:
from sympy.simplify.fu import *
TR8(some_expression)
到目前为止,这是我访问 TR8 的唯一方法,但我知道这不是推荐的方法。
以下尝试失败:
from sympy.simplify import fu
fu.TR8(some_expression)
>>AttributeError: 'function' object has no attribute 'TR8'
from sympy import fu
fu.TR8(some_expression)
>>AttributeError: 'function' object has no attribute 'TR8'
我不确定,但在我看来,Python 认为我正在尝试导入名为 fu 的函数而不是名为 fu 的模块。同样,当我这样尝试时:
import sympy.simplify.fu as fu
>>AttributeError: 'function' object has no attribute 'fu'
这里Python似乎认为我正在谈论函数sympy.simplify.simplify,而不是模块sympy.simplify。
那么,当该模块包含与该模块同名的函数时,是否有正确的方法要求 Python 导入该模块?