将 Python 变量转储到另一个文件中



我想做一些类似于这里概述的事情:

来自不同文件的全局变量 Python

但是我相信我没有从变量 file.foo 获得输出,因为 foo 没有在 file.py 中明确定义。Foo 是从读取文件创建的矩阵数组。file.py 将读取文件中的值附加到 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)

我发布了这个答案,但我不太确定我是否理解了你的问题。你提到了这个问题:来自不同文件的全局变量 Python

但是我相信我没有从变量file.foo获得输出,因为foo没有在file.py中明确定义。foo是从读取文件创建的矩阵数组。

您提到file.foo未在file中明确定义。我从你的陈述中了解到,foo存在于file模块中的另一个对象中。因此,为了获得foo您需要通过该对象获取它:

import file 
file.object.foo

或:

import file *
object.foo

file.py将读取文件中的值追加到foo因此file.py必须独立运行才能定义foo

您基本上会导入file模块,以便从读取文件中附加值。因此,在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_matricesGlobalize_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_matricesfile,它也不会起作用。

color_matrices = Full_Layout(array=org_arr, resolution=1)      # Top-level assignment, global var
def Globalize_RPF():
# process color_matrices

现在color_matrices是一个全局变量,也就是说你可以在函数、类、表达式和许多其他地方file模块中使用它,你可以在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 = ...,则只需创建函数的本地color_matrices,并且将隐藏/覆盖全局作用域(在模块顶部分配的全局作用域)color_matrices

最新更新