/ / Python - variable local referenciada antes de la asignación - python, variable-asignación

Python - variable local referenciada antes de la asignación - python, asignación de variable

Soy relativamente nuevo en programación y sufro de lo que parece ser un problema simple.

Aquí está el fragmento que está causando el problema (es parte de esta función más grande: http://pastebin.com/2apwWsEv)

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])

Salida:

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

Parece que me asigno time El valor de row[i].split(":"), así que no entiendo donde está el error.

Intenté cambiar alrededor del segundo if declaración (a un más convencional elif, etc) pero eso no cambió el error.

(El campo de tiempo, de los datos csv, está en el formato de hh: mm: ss y estoy intentando convertirlo en segundos).

¿Alguien puede explicar cómo? time ¿Se está utilizando antes de ser asignado?

Respuestas

4 para la respuesta № 1

En tu pastebin, la línea. row[i] = int(... Se sangra utilizando cuatro espacios y cuatro pestañas. A pesar de que la línea parece tener la misma sangría que la anterior, en realidad está sangrada menos cuando se interpreta por Python.

No mezcle las pestañas y los espacios; use solo uno u otro. El estilo predominante es usar solo espacios.


1 para la respuesta № 2
  1. Por favor, no use el nombre de una biblioteca para el nombre de una variable. "Tiempo" es definitivamente una biblioteca.
  2. Si desea utilizar variables globales en una función (y no obtener el "error antes de la asignación" -error ;-)) escriba

global name_of_variable

en su código al comienzo de la función (ver Uso de variables globales en una función distinta a la que las creó.)