from 不修改,import會修改
1、語法分析:首先from A import a1 是從A模塊導入a1工具(可以是某個 函數,全局變量,類),import A是導入整個A模塊的全部內容(包括全部的函數,全局變量,類)。
2、內存分析:from...import...
會在內存中創建並加載該模塊工具的副本,當有另外一個程序導入時,會在內存中創建另一個副本進行加載,
不會共用一個副本,所以程序進行的修改不會影響到被導入的原模塊,且不同程序之間不會互相影響。 import...方法導入模塊
會在內存中直接加載該模塊的全部屬性。當出現多個程序導入該模塊時,會共用一個模塊,
程序之間會互相影響,包括原模塊。
圖文解釋:
(1)創建基礎模塊
#model_a.py a=3 b=4
(2)from...import...導入模塊,控制台輸出
#第一個腳本model1導入基礎模塊,並修改基礎模塊的值
#!/usr/bin/python from model_a import a,b import model2 print a print b a=5 print a print b print model2.sum()#查看model1中修改數據時是否會影響到model2
#第二個腳本model2中導入基礎模塊
#!/usr/bin/python import model_a print '2',model_a.a print '2',model_a.b def sum(): return model_a.a+model_a.b
輸出為:
2 3
2 4
3
4
5
4
7
使用from model_a import a,b后,在model1中修改a的值沒有影響到model2中
(3)import...導入模塊,控制台輸出
#在model1中使用import的方式導入model_a
#!/usr/bin/python import model_a import model2 print model_a.a print model_a.b model_a.a=5 print model_a.a print model_a.b print model2.sum()
輸出為:
2 3
2 4
3
4
5
4
9
使用import model_a后,在model1中修改a的值影響到了model2中
3、from...import * 屬於from...import...,只不過是加載了模塊的全部屬性。
總的來說:
1)import和from-import的顯著區別


3)當多個程序需要同時導入一個模塊當其中一個需要修改模塊,那么修改的模塊的程序應該使用from來導入模塊