Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python导入的模块依赖项_Python_Python 3.x - Fatal编程技术网

Python导入的模块依赖项

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库,我需要导入两次吗?这似乎不是最优的。什么是解决这个问题的最好的方法 我知道这是一个愚蠢的例子,但我正在尝试将我制作的代码分割成几个模块用于组织

假设我有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
库,我需要导入两次吗?这似乎不是最优的。什么是解决这个问题的最好的方法


我知道这是一个愚蠢的例子,但我正在尝试将我制作的代码分割成几个模块用于组织,这个问题在几个级别多次出现

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的简单示例,毫无疑问,但我假设这只是一个概念草图。我不认为任何人会有一个单独的文件来导入数学。