代码之家  ›  专栏  ›  技术社区  ›  Mr. B.

共享模块变量不更新?

  •  0
  • Mr. B.  · 技术社区  · 6 年前

    我正试图在包和模块之间共享(set/get)一个变量,但是值没有改变。

    我做错什么了?

    共享.py

    my_shared_value = 'init'
    

    mod_write.py模式

    import mylib.shared
    mylib.shared.my_shared_value = 'changed'
    

    mod_read.py模式

    import mylib.shared
    
    while True:
        # outputs always 'init' but should output 'changed' 
        # after mod_set.py was executed.
        print(mylib.shared.my_shared_value)
    

    执行 (相同的虚拟环境)

    # Terminal 1
    python ./mod_read.py # outputs 'init', runs forever
    
    # Terminal 2
    python ./mod_write.py # doesn't affect the output of Terminal 1
    
    0 回复  |  直到 6 年前
        1
  •  0
  •   Lusine Mikayelyan    6 年前

    要查看mod_write.py文件的结果,还需要导入该文件(但在第一次导入之后)。

    在您的例子中,您单独执行文件,因此看不到预期的结果。

    试试看:

    import mylib.shared
    import mylib.mod_write
    
    while True:
        # outputs always 'init' but should output 'changed' 
        # after mod_set.py was executed.
        print(mylib.shared.my_shared_value)