我有3个python脚本,我试图作为最终脚本运行,但我无法传输变量。我有script_A.py包含所有数据。
script_B.py和script_C.py使用脚本A中的所有变量。因此“from script_A import *”适用于每个变量。
我想在最终脚本final_script.py中运行script_B.py和script_C.py 如果不必在final_script.py中将script_A.py中的变量初始化两次,我该怎么办呢?
答案 0 :(得分:0)
您可以分别使用script_A
和script_B
来引用script_C
的变量。
以下是演示:
A.py
foo = 5
print('In A')
B.py
from A import *
print('In B')
final.py
import B
print('In final')
print B.foo
现在,运行final.py
会给出:
In A
In B
In final
5
正如您所看到的,一旦B
导入A
的数据,它就会成为B的一部分,因此import B
可以引用A
的其他类数据直接通过B
,而无需再次导入A
。
答案 1 :(得分:0)
如果您需要将script_B.py
和script_C.py
文件作为单独的可执行脚本,我的解决方案是重构脚本以包含将所有相关变量作为参数的函数:
script_A.py
:
var1 = 'foo'
var2 = 'bar'
script_B.py
def do_b(var1, var2):
pass # do things with var1 and var2
if __name__ == '__main__':
from script_A import var1, var2
do_b(var1=var1, var2=var2)
script_C.py
def do_c(var1, var2):
pass # do things with var1 and var2
if __name__ == '__main__':
from script_A import var1, var2
do_c(var1=var1, var2=var2)
final_script.py
from script_A import var1, var2
from script_B import do_b
from script_C import do_c
def main():
do_b(var1, var2)
do_c(var1, var2)
if __name__ == '__main__':
main()