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

    Python import 包的机制是import进来的系统的module都放在sys.module这个字典里面

    多个py文件在import的时候,会先去sys.module里面检查是否已经import了,如果已经import了,就不再重复import,否则就import进来

    from aaa.yyy import x则不一样,test.py中这样from import,此时x就是test自己命名空间中的变量。所以x只在test.py中有效,无论如何对x修改,都无法影响yyy中的x

    也就是说
    from yyy import x
    等同于

    improt yyy
    x= yyy.x  # 当你执行x=2时,完全影响不到yyy.x
    

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

    示例:

    # 目录树
    multi_module
    │  main.py
    │  val_sync.py
    
    # val_sync.py
    DICT = {
    	'a':1,
    	'b':2,
    }
    
    # main.py
    import val_sync as mv
    print(mv.DICT)
    mv.DICT['c'] = 3
    print(mv.DICT)
    mv.DICT.pop('a')
    print(mv.DICT)
    
    python main.py
    out:
    {'a': 1, 'b': 2}
    {'a': 1, 'b': 2, 'c': 3}
    {'b': 2, 'c': 3}
    
  • 相关阅读:
    php实现rpc简单的方法
    统计代码量
    laravel的速查表
    header的参数不能带下划线
    PHP简单实现单点登录功能示例
    phpStorm函数注释的设置
    数据结构基础
    laravel生命周期和核心思想
    深入理解php底层:php生命周期
    Jmeter:实例(性能测试目标)
  • 原文地址:https://www.cnblogs.com/sayiqiu/p/10966064.html
Copyright © 2011-2022 走看看