所以我知道以前已经以几种形式询问过这个问题,但是我无法与其中任何一种联系起来,要么我有所不同,要么就是我不理解它们。
问题是我有脚本A和脚本B,在脚本A中我计算并拥有了要在脚本B中使用的所有变量。
脚本A具有各种功能,现在我只想将一个简单的数字从脚本A中的变量传递给脚本B,我们将其称为变量value
。
我使用了from script_A import value
。
现在,我已经在script_A中value
初始化了,右上角是0,但是script_A处理value
并得到明显不同于0的结果,但是当我调试时,我是进入script_B value == 0
,而不是value == calculated_value_that_should_be_there
。
我不知道该怎么做,所以我对范围很苛刻,因此将其放在函数的return
中,我尝试将变量value
设置为全局变量。我没有传递计算出的“值”,但我传递给script_B那个0初始化的方法似乎无济于事。
P.S最后一件事,是从该主题中看到的,是导入没有名称空间的script_A。这行得通。当我编写script_A.value时,它是calculated_value_that_should_be_there。但是,我不知道为什么我描述的其他任何方法都不起作用。
script_A
from definitions import *
variable_1 = 0
variable_2 = 0
variable_3 = 0
variable_4 = 0
total = 0
respected = 0
time_diff = {}
seconds_all_writes = "write"
class Detect():
def __init__(self, data_manager, component_name, bus_name_list=None):
def __Function_A(self):
"""
global time_diff
global seconds_all_writes
process
script_B:
from script_A import respected
from script_A import total
import script_A
print aln_mon_detector.total
print aln_mon_detector.respected
我也想要字典
table_content.append(script_A.time_diff [file [script_A.seconds_all_writes])
我知道
KeyError:“写入”
答案 0 :(得分:1)
如果没有示例,这听起来有点令人困惑,但是,原则上,您要尝试执行的操作应该可行。看看下面的最小示例。
ModuleA-定义变量
# create the variable
someVariable = 1.
# apply modifications to the variable when called
def someFunc(var):
return var + 2
# ask for changes
someVariable = someFunc(someVariable)
ModuleB-使用变量
import moduleA
# retrieve variable
var = moduleA.someVariable
print(var) # returns 3
答案 1 :(得分:0)
这可能与不变性有关。取决于value
是什么。如果value
是一个列表(即可变对象),并且将其追加到列表中,则更改应该是可见的。但是,如果您写
from module import x
x = 5
您没有更改实际值,因此对x
的其他引用仍将显示原始对象。
答案 2 :(得分:0)
如果您有script A
这样的话:
# imports
value = 0
... # some calculations
将script A
重新组织为:
# imports
def main():
value = 0
... # some calculations
return value
现在,您可以在script A
中导入script B
并在calculations
内运行script B
:
import script_A
value = script_A.main()
这就是您应该如何在Python中组织代码段。