比如有兩個模塊,一個aa.py,一個bb.py 代碼如下:
aa.py:
#encoding:utf-8import bba=1
bb.py:
#encoding:utf-8import aaprint aa.a
執行bb.py時,不能執行,打印錯誤 AttributeError: 'module' object has no attribute 'a'
原因:
如果執行bb的話,這時候bb是__main__,不是module,所以會執行到bb的from aa,這個時候python會執行aa.py,而aa.py一開始就是from bb,所以python又會去執行bb.py,因為bb.py的一開始就是from aa,并且因為之前執行過,所以這個時候aa已經在sys.module里面,所以python不會重新執行aa.py,而只是把sys.modules里面的aa返回給你,所以當執行到bb.py的print b 的時候,還沒有執行aa.py里面的a=1,所以會有找不到a的attribute error
解決方案:
aa.py:
#encoding:utf-8import bba=1
bb.py:
#encoding:utf-8import aaif __name__=="__main__": print aa.a
以上這篇對python同一個文件夾里面不同.py文件的交叉引用方法詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。
新聞熱點
疑難解答