【问题标题】:How to mutually share variables between two python scripts?如何在两个python脚本之间相互共享变量?
【发布时间】:2017-05-17 16:19:00
【问题描述】:

我有两个脚本,first.py 和 second.py。我想将第一到第二的变量和第二到第一的变量发送。但它显示一个错误。谁能帮帮我?

first.py

import second

a=10

print second.b

second.py

import first

b=15

print first.a

错误

AttributeError: 'module' 对象没有属性 'b'

【问题讨论】:

  • 显示什么错误?
  • 这是我的猜测:当你在first.py 中导入second 时,首先发生的是first 被导入到second。然后,读取first,跳过import second,因为它已经准备好了,Python 不会两次导入相同的东西(否则你会在两个文件之间得到一个无限循环的导入)。然后读取a=10 行,最后读取print second.b。问题是second.py 没有时间阅读到底部,因为它首先尝试import first,因此在调用print second.b 时它还没有分配b

标签: python


【解决方案1】:

坦率地说,你不想那样做。它可能导致循环导入(或部分导入)和很多混乱。您通常需要的是一个将导入其他两个的主程序。然后主程序可以将数据从一个传递到另一个,因为它可以访问两者。

还有发布/订阅的想法-https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern

在 Python 中,您可以自己执行此操作,也可以使用方便的包,例如 PyPubSubPyDispatcher

【讨论】:

    【解决方案2】:

    您可以为此使用一个简单的 memcached 服务器。 https://pypi.python.org/pypi/python-memcached

    【讨论】:

    • 它通常用于同时访问的多处理需求,但也适用于您的情况。
    【解决方案3】:

    或者,如果它也是其他人可能受益的东西,你可以尝试将它写入第三个文件(称之为 variable.txt 或其他东西)

    【讨论】: