python引用其他文件提示找不到模块_Python:为什么导入的模块不能引用另一个导入的模块?...
如果您以這種方式修改了subtwo.py,那么它將起作用
import subone
print subone.a
當你在subtwo.py中執行subone.a時,你試圖訪問subtwo.py和命名空間“subone”中的命名空間subone,應該有一個屬性“a”.
當你這樣做 – 在subtwo.py中導入subone時,subone被添加到命名空間,subone命名空間有屬性a.所以subone.a會起作用.
我還建議您使用dir()來查看如何添加命名空間.
在subtwo.py中,您可以執行以下操作:
print dir()
import subone
print dir()
print subone.a
同樣,嘗試在import語句之前和之后添加“print dir()”,這個想法應該變得清晰.
“import x” adds ‘x’ to the current modules
namespace while “from x import * ” will
add all the module level attributes
directly into current module namespace
所以在上面的main.py,subone.py和subtwo.py的第一個例子中,main.py中的命名空間將包含’subone’和’subtwo’,而subtwo.py將具有空命名空間,并且無法訪問subone.a .
[編輯:更多解釋]
考慮以下文件:
main.py
print "Before importing subone : ", dir()
import subone
print "After importing subone and before importing subtwo: ", dir()
import subtwo
print "After importing subone and subtwo: ", dir()
subone.py
a = 'abc'
subtwo.py
print dir()
import subone
print "module level print: ", subone.a
print dir()
def printX():
print subone.a
并運行main.py的輸出:
Before importing subone : ['__builtins__', '__doc__', '__file__', '__name__', '__package__']
After importing subone and before importing subtwo: ['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'subone']
['__builtins__', '__doc__', '__file__', '__name__', '__package__']
module level print: abc
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'subone']
After importing subone and subtwo: ['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'subone', 'subtwo']
Some Observations
>您會注意到導入模塊subtwo.py,會立即執行print語句.>因此,當在main.py中導入subone和subtwo時,main.py的命名空間會被擴充.>這并不意味著將增加subtwo的命名空間.所以“a”只能通過subone.a在main.py中使用>當我們在subtwo.py中導入subone時,subwo的命名空間用subone增加,而subow.py中的module subone屬性可通過subone.a獲得.
總結
以上是生活随笔為你收集整理的python引用其他文件提示找不到模块_Python:为什么导入的模块不能引用另一个导入的模块?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 鼠标右键 移动选定的文件夹到指定位置_i
- 下一篇: python实例化对象是什么意思_请帮我