我想做类似于此处概述的事情:
但是我相信我没有从变量file.foo获得输出,因为foo没有在file.py中明确定义。 Foo是一个从readfile创建的矩阵数组。 file.py将readfile中的值附加到foo,因此file.py必须独立运行才能定义foo。
因此,我想知道是否有办法将python变量的定义转储到我稍后可以调用的某个位置。我的另一种选择是将此变量转储到txt文件,我真的不想这样做以避免无关的文件创建和其他复杂情况。
编辑:
这就是我所拥有的:
color_matrices = Full_Layout(array=org_arr, resolution=1)
def Globalize_RPF():
global color_matrices
然后我试图在我当前的pyfile中调用color_matrices,如下所示:
from ThreeD_Core_Distribution import color_matrices
RPF = color_matrices
print(RPF)
答案 0 :(得分:0)
我发布了这个答案,但我不太确定我是否理解你的问题。您提到了这个问题:Global Variable from a different file Python
但是我认为我没有从变量
file.foo
获得输出,因为foo
中没有明确定义file.py
。foo
是从readfile创建的矩阵数组。
您提到file.foo
未在file
中明确定义。我从您的陈述中理解的是,foo
生活在file
模块中的另一个对象中。因此,为了获得foo
,您需要通过该对象获取它:
import file
file.object.foo
或:
import file *
object.foo
file.py
将读取文件中的值附加到foo
,因此file.py
必须独立运行以定义foo
。
您基本上会导入file
模块,以便附加readfile中的值。因此,在file
中,您将打开readfile以将其值附加到foo
,这基本上是file
:file.foo
的对象。
我只希望得到你所问的问题。
修改:
假设您发布的代码位于名为file
的模块文件中:
color_matrices = Full_Layout(array=org_arr, resolution=1)
def Globalize_RPF():
global color_matrices
color_matrices
是全球性的,因为它是在模块的顶层分配的。 global color_matrices
函数中的此语句Globalize_RPF
将声明您打算更改全局变量color_matrices
:
def Globalize_RPF():
color_matrices = Full_Layout(array=org_arr, resolution=1) # Local to function, you cannot use `file.foo` after importing `file` module
以这种方式分配时,color_matrices
是函数的本地。那是什么意思?这意味着变量不能在函数外部访问。因此,即使您尝试在color_matrices
模块中的函数之后使用file
,它也无法正常工作。
color_matrices = Full_Layout(array=org_arr, resolution=1) # Top-level assignment, global var
def Globalize_RPF():
# process color_matrices
现在color_matrices
是一个全局变量,您可以在函数,类,表达式和许多其他地方的file
模块中使用它,您可以在{}中的任何位置引用该变量{1}}因为它的全球现在。因为file
现在是全局的而不是函数内的局部变量,所以我们可以通过导入color_matrices
来获取其值,如下所示:
file
如果您需要将 from file import color_matrices
RPF = color_matrices
print(RPF)
重新分配给该功能内的新结果,请使用color_matrices
关键字:
global
如果您仅在功能正文中使用def Globalize_RPF():
global color_matrices
color_matrices = ... # Changes global color_matrices
,则只需创建该功能的本地color_matrices = ...
,即可影响/覆盖{{1}全局范围,即在模块顶部分配的范围。