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
    來源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    Java正则表达式入门1
    JAVA中正则表达式总结
    Java正则表达式入门
    java String.valueOf()的作用
    【HDOJ】3601 Coach Yehr’s punishment
    【HDOJ】4601 Letter Tree
    【HDOJ】3686 Traffic Real Time Query System
    【HDOJ】5296 Annoying problem
    【HDOJ】3553 Just a String
    【HDOJ】4426 Palindromic Substring
  • 原文地址:https://www.cnblogs.com/feifeidxl/p/8021628.html
Copyright © 2011-2022 走看看