In python globals are global to the module, not to the whole program. The standard way to do something like this in an object oriented language is to attach the relevant array to some object for example:
main_module:
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)
process:
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)
If you don't want to define your own class for this you can use a simple built in class like a dict. For example:
main_module:
import numpy as np
from pprint import pprint
arrayholder = {'test_array':np.array([1, 2, 3])}
pprint(arrayholder['test_array'])
process:
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'])