zoukankan      html  css  js  c++  java
  • python 多模块文件共享变量

    Python import 包的机制是,import进来的和默认的系统的module了,都放在sys.module这个字典里面.
    多个py文件再次import的时候,会先去sys.module里面检查是否已经import了,如果已经import了,就不再重复import,否则就import进来

    ===

    import glovar和from comon import glovar的命名空间是一样的,key都是glovar

    from common.glovar import x 则不一样,test.py中这样from import,就相当于在test.py文件中写了一行代码x = 1,
    此时x就是test自己命名空间中的变量。所以x只在test.py中有效,无聊自己如何对x修改,都无法影响glovar 中的x

    #换种说法
    from glovar import x
    #等同于
    improt glovar
    x= glovar.x
    #你调用x的时候,就是自己的命名空间中的x
    #当你执行x=2时,完全影响不到glovar.x
    

    下面是解释

    #引入当前glovar文件,此时namespace是glovar
    import glovar
    
    #从common目录中引入glovar,此时namespace是glovar
    from comon import glovar
    
    #从common目录中的glovar文件中引入x=1,此时namespace就是引用者,也就是上面的test.py
    from common.glovar import x 
    

    所以,如果需要共享变量,就不要使用from file import x这种形式,而是使用import file,然后就可以通过file.x来使用,然后file.x='abc'可以进行修改。这样都这样处理全局性的变量就可以共享的。也就是保持一个独立的namespace,这样python不会再次导入,从而实现共享。



    作者:coreki
    链接:http://www.jianshu.com/p/4bb742d7d672
    來源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    第17章 委托
    第16章 数组
    第15章 枚举类型和位标志
    第14章 字符、字符串和文本处理
    第13章 接口
    第12章 泛型
    第10章 属性
    第11章 事件
    内部类(转载)
    Collections.sort的三种用法
  • 原文地址:https://www.cnblogs.com/feifeidxl/p/8021628.html
Copyright © 2011-2022 走看看