Python导入的模块依赖项
假设我有main.py文件:Python导入的模块依赖项,python,python-3.x,Python,Python 3.x,假设我有main.py文件: import math import mymodule.py print(math.ceil(5/3)) 然后是mymodule.py: print(math.ceil(10/3)) mymodule.py给出一个错误,即未定义数学,即使其父模块已导入数学 考虑到main.py和mymodule.py都需要使用math库,我需要导入两次吗?这似乎不是最优的。什么是解决这个问题的最好的方法 我知道这是一个愚蠢的例子,但我正在尝试将我制作的代码分割成几个模块用于组织
import math
import mymodule.py
print(math.ceil(5/3))
然后是mymodule.py:
print(math.ceil(10/3))
mymodule.py给出一个错误,即未定义数学,即使其父模块已导入数学
考虑到main.py和mymodule.py
都需要使用math
库,我需要导入两次吗?这似乎不是最优的。什么是解决这个问题的最好的方法
我知道这是一个愚蠢的例子,但我正在尝试将我制作的代码分割成几个模块用于组织,这个问题在几个级别多次出现
mymodule.py
是main.py
的父级,因为您在main
中导入mymodule
您需要在
mymodule
中导入math
,以便在main
中继承它这样就不需要在
main
中导入
mymodule.py
import math
main.py
import mymodule
print mymodule.math.pow(10,2)
结果:
>>>
100.0
>>>
mymodule.py
是main.py
的父级,因为您正在main
中导入mymodule
。您需要在
mymodule
中导入math
,以便在main
中继承它这样就不需要在
main
中导入
mymodule.py
import math
main.py
import mymodule
print mymodule.math.pow(10,2)
结果:
>>>
100.0
>>>
这是非常基本的。如果您在一个单独的文件中有一些内容,比如mymodule.py,那么您可以轻松地将该函数导入同一目录中的任何python文件中 两个文件: mymodule.py:
import math
def aFunc():
return math.ceil(10/3)
# We could also just use this file as a standalone
if __name__ == "__main__":
print(aFunc())
main.py:
import mymodule
print(mymodule.aFunc())
您还可以专门调用要导入的函数
main.py(可选):
这是非常基本的。如果您在一个单独的文件中有一些内容,比如mymodule.py,那么您可以轻松地将该函数导入同一目录中的任何python文件中 两个文件: mymodule.py:
import math
def aFunc():
return math.ceil(10/3)
# We could also just use this file as a standalone
if __name__ == "__main__":
print(aFunc())
main.py:
import mymodule
print(mymodule.aFunc())
您还可以专门调用要导入的函数
main.py(可选):
只需在最具python风格的文件中再次导入它,事实上唯一的方法就是在两个文件中都导入它。Python就是这样工作的。@ryugie在本例中,是的,但实际上我将一个文件分解为几个模块,这个问题在几个级别上重复了很多次。这取决于您是否一致地导入。例如,
导入数学
vs从数学导入*
或仅从数学
导入特定方法。如果您的导入和应用程序是一致的,则不会引起问题,重新导入是便宜的。你不应该认为两次导入同一个模块是一个问题。只需在最具python风格的情况下再次导入它——事实上,唯一的方法是在两个文件中导入它。Python就是这样工作的。@ryugie在本例中,是的,但实际上我将一个文件分解为几个模块,这个问题在几个级别上重复了很多次。这取决于您是否一致地导入。例如,导入数学
vs从数学导入*
或仅从数学
导入特定方法。如果您的导入和应用程序是一致的,则不会引起问题,重新导入是便宜的。你不应该认为导入同一个模块是个问题。我以为main.py
是父级,所以我只能在mymodule.py
中导入?这取决于要导入到哪里的模块。请参见上面的示例。您确实不需要从mymodule导入中执行*
。那太过分了。除非您想调用特定的函数或类(例如,从mymodule import aFunc调用),否则您只需导入mymodule
)即可。我使其更加模块化,命名空间更加混乱。虽然,我的意图是展示演示solution.user的简单示例,毫无疑问,但我假设这只是一个概念草图。我不认为任何人会有一个单独的文件来导入数学。我以为main.py
是父级,所以我只能在mymodule.py
中导入?这取决于要导入到哪里的模块。请参见上面的示例。您确实不需要从mymodule导入中执行*
。那太过分了。除非您想调用特定的函数或类(例如,从mymodule import aFunc调用),否则您只需导入mymodule
)即可。我使其更加模块化,命名空间更加混乱。虽然,我的意图是展示演示solution.user的简单示例,毫无疑问,但我假设这只是一个概念草图。我不认为任何人会有一个单独的文件来导入数学。