运行 2 python 个具有依赖关系的脚本
Running 2 python scripts with dependencies
我有 3 个 python 脚本,我正尝试将它们 运行 作为最终脚本,但我无法转移变量。我有 script_A.py 的所有数据。
script_B.py 和 script_C.py 使用脚本 A 中的所有变量。因此 "from script_A import *" 适用于每个变量。
我想 运行 在最终脚本中 script_B.py 和 script_C.py,final_script.py
我怎样才能做到这一点而不必在 final_script.py 中两次初始化 script_A.py 中的变量?
您可以分别使用script_B
和script_C
来引用script_A
的变量。
这是一个演示:
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
。
如果您需要 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()
我有 3 个 python 脚本,我正尝试将它们 运行 作为最终脚本,但我无法转移变量。我有 script_A.py 的所有数据。
script_B.py 和 script_C.py 使用脚本 A 中的所有变量。因此 "from script_A import *" 适用于每个变量。
我想 运行 在最终脚本中 script_B.py 和 script_C.py,final_script.py
我怎样才能做到这一点而不必在 final_script.py 中两次初始化 script_A.py 中的变量?
您可以分别使用script_B
和script_C
来引用script_A
的变量。
这是一个演示:
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
。
如果您需要 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()