2014-11-30 3 views
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?

+1

Когда вы получите эту ошибку - в чем остальная часть вашего кода - существует меньший, но полный сегмент кода, который генерирует эту ошибку. –

+0

Почему вы пытаетесь использовать (и объявляете) глобальную переменную внутри функции? – user239546

+0

Да, я заметил, что мне просто нужно было определить res = [], чтобы он работал. Был бы способ, которым мне не нужно использовать глобальную переменную в этой рекурсии? – alvarezcl

ответ

1

Похоже, что глобальная переменная res не определена перед функцией, возможно, она определена в другой консоли.

Смежные вопросы