0
У меня есть следующее определение функции:Проблемы с глобальной переменной
def rcsplit(arr):
if np.all(arr==0): return [] # if all zeros return
global res
arr = delrc(arr) # delete leading/trailing rows/cols with all zeros
indr = np.where(np.all(arr==0,axis=1))[0]
indc = np.where(np.all(arr==0,axis=0))[0]
if not indr and not indc: # If no further split possible return
res.append(arr)
return
arr=np.delete(arr,indr,axis=0) #delete empty rows in between non empty rows
arr=np.delete(arr,indc,axis=1) #delete empty cols in between non empty cols
arr=np.split(arr,indc,axis=1) # split on empty (all zeros) cols
arr2=[]
for i in arr:
z=delrc(i)
arr2.extend(np.split(z,indr,axis=0)) # split on empty (all zeros) rows
for i in arr2:
rcsplit(np.array(i))
Проблема в том, я получаю следующее сообщение об ошибке:
NameError: global name 'res' is not defined
Но это точный код работает на других консолях. Это мой Python 2.7?
Когда вы получите эту ошибку - в чем остальная часть вашего кода - существует меньший, но полный сегмент кода, который генерирует эту ошибку. –
Почему вы пытаетесь использовать (и объявляете) глобальную переменную внутри функции? – user239546
Да, я заметил, что мне просто нужно было определить res = [], чтобы он работал. Был бы способ, которым мне не нужно использовать глобальную переменную в этой рекурсии? – alvarezcl