1. import導入方式爲2種,1)import 模塊名 2)from 模塊 import 變量或函數。函數
這二者的區別是前者的引用須要用「模塊名.函數名或變量名」的方式引用,且模塊中有與當前文件同名的對象時,不會覆蓋當前文件中的對象。spa
另外一個值得注意的地方是,import導入的函數的名稱空間仍然在原來的模塊中。好比,當前環境中和被導入模塊都存在一個變量x, 即便在當前環境中修改了X,此時執行被導入模塊中的函數B,B中使用了X,此時發現B中的X的值仍然是修改以前的X。code
1 ##test_0.py 2 x=99 3 def show_0(): 4 print(x) 5 6 ##test_1.py 7 from test0 import * 8 9 def show_1(): 10 print(x) 11 12 x=1 13 show_0() 14 show_1()
此時執行的結果以下:對象
99blog
1作用域
這個比較奇特,因此import導入文件並不簡單地合二爲一,各自仍是存在本身的做用域。class
2. exec執行其餘文件。test
exec和import在功能上仍是有較大區別,exec是執行整個文件,而沒法選擇其中的函數。而import在導入時「附帶地」執行最外層的代碼,其主要做用仍是執行其中的函數。在都執行最外層代碼的狀況下,這兩種方法的區別是exec像是將代碼合二爲一,會影響當前環境的變量。import執行文件時,若是是「import 模塊名「的形式,則不會影響其中的變量;若是是「from 模塊名 import 變量」,則會影響。但如前面所說,並非合而爲一。import