python的import和form...import的區別


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...

無法重載...


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM