gpt4 book ai didi

python - 无法从其他模块追加全局 NumPy 数组

转载 作者:太空宇宙 更新时间:2023-11-03 18:17:14 24 4
gpt4 key购买 nike

我在修改依赖模块中的 NumPy 数组时遇到问题,该数组先前在父模块中定义。我已经检查过,它仅修改函数 calc() 中的局部内容如何修改函数内其他模块中定义的 NumPy 数组?

ma​​in_module.py

import numpy as np
from pprint import pprint
test_array = np.array([1, 2, 3])
pprint(test_array)

process.py

from main_module import *
def calc():
global test_array
test_array = np.append(test_array, [4])
pprint(test_array)
calc()
pprint(test_array)

最佳答案

在Python中,全局变量是模块的全局变量,而不是整个程序的全局变量。在面向对象语言中执行此类操作的标准方法是将相关数组附加到某个对象,例如:

主模块:

import numpy as np
from pprint import pprint

class GlobalArrayHolder(object):
def __init__(self):
self.test_array = np.array([1, 2, 3])

arrayholder = GlobalArrayHolder()
pprint(arrayholder.test_array)

流程:

import numpy as np
from pprint import pprint
from main_module import arrayholder

def calc(arrayholder):
arrayholder.test_array = np.append(arrayholder.test_array, [4])
pprint(arrayholder.test_array)

calc(arrayholder)
pprint(arrayholder.test_array)

如果您不想为此定义自己的类,您可以使用简单的内置类,例如字典。例如:

主模块:

import numpy as np
from pprint import pprint

arrayholder = {'test_array':np.array([1, 2, 3])}
pprint(arrayholder['test_array'])

流程:

import numpy as np
from pprint import pprint
from main_module import arrayholder

def calc(arrayholder):
arrayholder['test_array'] = np.append(arrayholder['test_array'], [4])
pprint(arrayholder['test_array'])

calc(arrayholder)
pprint(arrayholder['test_array'])

关于python - 无法从其他模块追加全局 NumPy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24829866/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com