#原創,轉載請留言聯系
- 區別1
import module 引用共享變量時,要使用module.變量名。
而from module import * 直接使用變量名即可
- 區別2(有點繞)
import module方式操作module的變量時,本地不會創建新變量,操作的是目標模塊的變量!
from module import *方式操作module變量時,實質上是在本地創建一個與目標模塊相同的變量名,並且默認與目標模塊變量指向同一個內存空間。
看似功能一樣,但是在開發中稍不注意可能會排bug排到頭皮發麻!
用一個小示例說明!
先建立一個module.py,里面就一個公共變量,a = []。
然后我們用import module方式先操作module的變量,再打印,看下有沒變化。
import module module.a = [1,2,3] print(module.a) from module import a print(a) 輸出: [1, 2, 3] [1, 2, 3]
看似很平常,正常操作,但是,繼續看!
from module import a a = [1,2,3] print(a) import module print(module.a) 輸出: [1, 2, 3] # 結果不同了! []
怎么調一下位置,就輸出不一樣了?
因為!from module import 方式是自己創建了一個自己的變量a指向module.a的內存空間。當執行命令a = [1,2,3]時,變量a賦值了,重新分配了內存空間。並不是module文件里的a變量重新分配空間,所以odule文件里的a變量的值沒有變化!
而import module方式是操作module文件里面a的變量,即使進行了賦值,重新分配了內存空間,但是他還是module里面的變量。所以當別人導入module的時候,module.a的值就是[1,2,3]了!
*建議!開發中,如果有操作公共變量的情況,一定要全部都用import module方式!