我有一个由多个脚本引用的辅助函数。我的想法是许多脚本可以使用辅助函数基本上附加到列表,然后在某些时候,这些脚本中的任何一个都可以访问列表中的元素。
有些脚本使用传统的“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"]
但是现在我得到了:
[]
答案 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']