Python 真正进口的是什么?
在Python(3.5)中,Python 真正进口的是什么?,python,import,module,Python,Import,Module,在Python(3.5)中,import是如何工作的,这让我有点困惑。我认为使用“importx”之类的东西就像是在“x.py”中写任何东西一样,但它似乎不是这样 我的结构如下: main.py 包装1 模块1.py 现在,为了完成,模块是: ##module1.py 将numpy作为np导入 将matplotlib.pyplot作为plt导入 def绘图(x,y): A=plt.图() 平面图(x,y) plt.show() 归还 所以它实际上没有做任何matplotlib.pypl
import
是如何工作的,这让我有点困惑。我认为使用“importx”之类的东西就像是在“x.py”中写任何东西一样,但它似乎不是这样
我的结构如下:
- main.py
- 包装1
- 模块1.py
##module1.py
将numpy作为np导入
将matplotlib.pyplot作为plt导入
def绘图(x,y):
A=plt.图()
平面图(x,y)
plt.show()
归还
所以它实际上没有做任何matplotlib.pyplot
不会做的事情。现在我的main.py只是这样称呼它:
##main.py
从Package1.module1导入绘图
a=绘图([1,2,3],[2,4,6])
这是有效的。因此我假设它实际上将matplotlib.pyplot
作为plt导入,因为否则函数plot
将无法工作。但是,如果现在我向main.py
添加任何内容,例如plt.figure()
或np.array()
,它会说它无法识别这些内容
所以实际的问题是。。。是否已将matplotlib.pyplot
导入主命名空间?如果没有,这里是否有其他名称空间?如果有,如果我现在想在该代码下面的main.py
中使用matplotlib
,并且我使用import matplotlib.pyplot as plt
再次导入它,我会导入两次吗
我对这里的等级制度有点迷茫
from Package1.module1 import plot
执行此操作时,只有模块Package1.module1
中的名称plot
被拉入当前模块(main.py
)。在包1.module1
中定义的其他符号不会被拉入
但是
packge1.module1
中的整个模块都在运行。如果在模块的全局部分放置一个打印('something')
,如:
## module1.py
import numpy as np
import matplotlib.pyplot as plt
print('something')
def plot(x,y):
A = plt.figure()
plt.plot(x,y)
plt.show()
return A
它将被打印出来
something
因此,您的函数定义确实已加载到运行时中。因此,您的函数可以工作。但您只能访问导入的函数,即绘图
,而不能访问其他任何内容
执行此操作时,只有模块Package1.module1
中的名称plot
被拉入当前模块(main.py
)。在包1.module1
中定义的其他符号不会被拉入
但是
packge1.module1
中的整个模块都在运行。如果在模块的全局部分放置一个打印('something')
,如:
## module1.py
import numpy as np
import matplotlib.pyplot as plt
print('something')
def plot(x,y):
A = plt.figure()
plt.plot(x,y)
plt.show()
return A
它将被打印出来
something
因此,您的函数定义确实已加载到运行时中。因此,您的函数可以工作。但您只能访问导入的函数,即
绘图
,而不能访问其他任何内容 可能重复的可能重复的哦。我懂了。但是,如果我在main.py
中使用import Package1.module1
导入“all”,它仍然无法识别plt
或np
。如果我添加导入,那么导入将主要运行两次,对吗?Python将缓存导入。所以不完全是这样。那些东西只会进口一次,我明白了。最后一件事。如果我使用import Package1.module1作为别名
,那么我可以使用alias.plt.figure()
,它就可以工作了。但是,如果我使用import Package1.module1
,但没有别名,它不允许我使用Package1.module1.plt.figure()。还有其他方法调用内部导入吗?使用\uuuu all\uuu
我明白了。非常感谢,好心的先生/女士:)哦。我懂了。但是,如果我在main.py
中使用import Package1.module1
导入“all”,它仍然无法识别plt
或np
。如果我添加导入,那么导入将主要运行两次,对吗?Python将缓存导入。所以不完全是这样。那些东西只会进口一次,我明白了。最后一件事。如果我使用import Package1.module1作为别名
,那么我可以使用alias.plt.figure()
,它就可以工作了。但是,如果我使用import Package1.module1
,但没有别名,它不允许我使用Package1.module1.plt.figure()。还有其他方法调用内部导入吗?使用\uuuu all\uuu
我明白了。非常感谢,好心的先生/女士:)