跨脚本存储变量

时间:2017-08-22 18:54:08

标签: python arrays variables

我有一个由多个脚本引用的辅助函数。我的想法是许多脚本可以使用辅助函数基本上附加到列表,然后在某些时候,这些脚本中的任何一个都可以访问列表中的元素。

有些脚本使用传统的“import”语句,而其他脚本则使用“importlib.import_module()” - 两者的组合似乎会导致问题。

我遇到的问题是辅助函数只存储当前脚本写入的值。

例如,如果我有:

Project/
|-- helpers/
|   |--store_value.py
|-- framework/
|   |runner/
|   |   |-- runner.py
|   |validator/
|   |   |-- validator.py

以及store_value.py中的以下内容:

ALL_MSGS = []

def print_message(msg, display_messages=True):
    """
    :param msg: [str] - String to be printed
    :return: None - Work In Progress
    """
    global ALL_MSGS
    ALL_MSGS.append(msg)
    if display_messages:
        print(msg)


def return_all_msgs():
    return ALL_MSGS

在Runner.py中我有:

import store_value, validator
...
store_value.print_message("Calling Validator")
validator.validate()
print(store_value.return_all_msgs())
...

和validator.py:

importlib.import_module("store_value")
...
store_value.print_message("Running Validator")
...

然后我希望输出为:

["Calling Validator", "Running Validator"]

但是现在我得到了:

[]

1 个答案:

答案 0 :(得分:0)

我将“runner.py”,“validator.py”和“store_value.py”全部放在同一个文件夹中,它运行正常。 “store_value.py”与您的相同,其他的是:

runner.py:

import store_value, validator

store_value.print_message("Calling Validator")
validator.validate()
print(store_value.return_all_msgs())

validator.py:

import store_value

def validate():
    store_value.print_message("Running Validator")

输出:

Calling Validator
Running Validator
['Calling Validator', 'Running Validator']