2013-04-26 2 views
0

Я установил глобальную переменную delete в начале проекта, прямо под импортированными библиотеками и перед любым классом, но когда у меня есть этот бит кода:Локальная переменная 'delete', на которую ссылаются перед присвоением глобальной переменной

def motion_notify_callback(event): 
     if (ispymol == True): 

      if event.inaxes is ax:  
      x = event.xdata 
      y = event.ydata 
      x = round(x,0) 
      y = round(y,0) 
      x = int(x) 
      y = int(y) 
      coord = (x,y) 


      for i in range(0,len(number_list)): 

       if (coord == number_list[i]): 
       if (delete == True): 
        pymol.cmd.do("delete CurrentCont") 
        delete = False 
       pymol.cmd.do("distance CurrentCont, chain"+lc+" and resi "+resi1[i]+" and name CA, chain"+lc+" and resi "+resi2[i]+" and name CA") 

        delete = True 

      for i in range(0,len(rres)): 
      if (coord == mappingpredcont[i]): 
       if (delete == True): 
         pymol.cmd.do("delete CurrentCont") 
         delete =False 
       pymol.cmd.do("distance CurrentCont, chain"+lc+" and resi "+predresi1[i]+" and name CA, chain"+lc+" and resi "+predresi2[i]+" and name CA") 

        delete = True 

У этого есть локальная переменная ошибки 'delete', на которую ссылаются перед назначением для глобальной переменной Где я иду не так?

+1

Вы должны определите 'global' в каждой функции, где вы хотите ее использовать (чтобы напомнить вам, что в> 99% всех случаев использования это плохой стиль кодирования). – Matthias

ответ

2

Вы должны сказать Python, что вы намерены присвоить глобальной переменной:

def motion_notify_callback(event): 
    global delete 
    ... 
2

Вам нужно определить delete как global в начале вашей функции:

def motion_notify_callback(event): 
    global delete 
    ..... 
Смежные вопросы