#原创,转载请留言联系spa
import module 引用共享变量时,要使用module.变量名。code
而from module import * 直接使用变量名便可blog
import module方式操做module的变量时,本地不会建立新变量,操做的是目标模块的变量!内存
from module import *方式操做module变量时,实质上是在本地建立一个与目标模块相同的变量名,而且默认与目标模块变量指向同一个内存空间。开发
看似功能同样,可是在开发中稍不注意可能会排bug排到头皮发麻!class
用一个小示例说明!import
先创建一个module.py,里面就一个公共变量,a = []。变量
而后咱们用import module方式先操做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方式!