2014-12-12 3 views
1

프로그래밍에 비교적 익숙하지 않아 간단한 문제인 것처럼 보입니다.파이썬 - 할당 전에 참조 된 로컬 변수

for i in range(4,12):      # remove nulls 
    if not row[i]: 
     row[i] = False 
    if row[i] and (i % 2):       # odd rows (time) 
     print row[i] 
     time = row[i].split(':') 
     row[i] = int(time[0]) * 3600 + int(time[1]) * 60 + int(time[2]) 

는 출력 :

row[i] = int(time[0]) * 3600 + int(time[1]) * 60 + int(time[2]) 
UnboundLocalError: local variable 'time' referenced before assignment 

것 같다 내가 time의 값 할당 여기

문제를 일으키는 코드 조각입니다 (: http://pastebin.com/2apwWsEv 그것은이 더 큰 기능의 일부입니다) row[i].split(':'), 그래서 나는 어디서 오류인지 이해하지 못한다.

두 번째 if 문을 변경하려고 시도했지만 (더 일반적인 elif 등) 오류를 변경하지 않았습니다.

(: mm : 시간 필드에서 CSV 데이터의, HH의 형식으로되어 SS 나는 초로 변환하려합니다.) 누군가가 time를 사용하는 방법

을 설명시겠습니까 할당되기 전에?

답변

4

당신의 pastebin에서, 라인 row[i] = int(...은 4 개의 공백과 4 개의 탭을 사용하여 들여 쓰여집니다. 선이 이전 선과 동일한 들여 쓰기를 가지고 있더라도 실제로는 파이썬이 해석 할 때 들여 쓰기가 적습니다.

탭과 공백을 혼용하지 마십시오. 둘 중 하나만 사용하십시오. 일반적인 스타일은 공백 만 사용하는 것입니다.

1
  1. 변수 이름에 libray 이름을 사용하지 마십시오. '시간'은 분명히 도서관이다.
  2. 당신이 함수에서 전역 변수를 사용하려면 (그리고 'assignment' 오류 ;-) 전에 언급되지 않는)의 시작 부분에 코드에서

global name_of_variable

를 작성하는 경우 기능 (Using global variables in a function other than the one that created them 참조)

관련 문제