import和form...import的區別
參考鏈接
https://www.cnblogs.com/lzc978/p/10105194.html
普通區別
import
使用import導入,后續要加上前綴才能調用
import a
a.zx()
from...import...
from...import...然后他就不需要加前綴了,直接調用
from a import zx
zx()
高級區別
關於高級部分的區別很少有人明白,但是還是很有必要的
import
import a
print(type(a))
#打印結果是一個模塊對象,說明引用着另一個模塊的內存
<class 'module'>
此時的內存圖應該是這樣的,如果去改變zx的值,也是改變b模塊的值
from...import...
from...import...的原理如下圖,它不是通過引用的方式的,而是直接把b的值復制一份過來,直接就變成了a的東西了
重名問題
要是b的變量名和a的變量名沖突會怎么樣?
#b的zx為100
zx = 200
from b import zx
print(zx)
200
from b import zx
zx = 200
print(zx)
100
#你會發現這完全遵循的就是普通的賦值規律,后賦值的優先,所以from text2 import zx就可以看做一條賦值語句zx=b.zx
重載
import
from importlib import reload
import b
text2.zx = 200
print(b.zx)
reload(b)
print(b.zx)
200
100
from...import...
無法重載...