天天看點

【Python】import和form...import的差別

普通差別#

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子產品的值

​​

【Python】import和form...import的差別

​​

from...import...

from...import...的原理如下圖,它不是通過引用的方式的,而是直接把b的值複制一份過來,直接就變成了a的東西了

​​

【Python】import和form...import的差別

​​

重名問題

要是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      

重載#

from importlib import reload
import b
text2.zx = 200
print(b.zx)
reload(b)
print(b.zx)
200 
100