Python - Ayuda - Nuevo en python - como leer error?

 
Vista:

Ayuda - Nuevo en python - como leer error?

Publicado por toty888 (1 intervención) el 27/09/2019 23:39:01
Buenas noches,

Les comento que hace algunos años intente aprender a programar y desistí por cuestiones laborales. Hoy por hoy ya con laburo estable estoy volviendo al ruedo. Para ponerlos en contexto, de forma rápida, mi hno de 29 esta casi por la mitad de Ing Industrial en la UTN de Argentina y al no conseguir laburo se decidió por aprender a programar (después de ver la cant de gente que piden en los portales laborales) y yo de 31 me sume a la voleada ya que si conozco a alguien super capaz y que es inteligente es el.

Estamos leyendo a la par "Aprenda a pensar como un programador con Python" y hasta casi el final del cap 3 veníamos bárbaro, pero es acá donde nos surge la siguiente duda:

El cap define 2 funciones:

1)
1
2
def imprimeDoble(paso):
   print paso, paso

2)
1
2
3
def catDoble(parte1, parte2):
   cat = parte1 + parte2
   imprimeDoble(cat)

Luego llama PRIMERO a la funcion 2 y no devuelve error.

Perdo despues llama a la funcion 1 y le pasa como argumento la variable local CAT creada dentro de la funcion 2 y segun el libro devuelve el siguiente error:


1
2
3
4
5
6
7
8
Traceback (innermost last):
    File "test.py", line 13, in __main__
        catDoble(cantus1, cantus2)
    File "test.py", line 5, in catDoble
        imprimeDoble(cat)
    File "test.py", line 9, in imprimeDoble
        print cat
NameError: cat

Y detalla "Esta lista de funciones de llama traceback (traza inversa). Le dice a usted en
qué archivo de programa sucedió el error, y en qué lı́nea, y qué funciones se
ejecutaban en ese momento. También muestra la lı́nea de código que causó el
error."

Entiendo el PORQUE del error que devuelve python lo que no entiendo es como leerlo, seria el siguiente:

MI DUDA SURGE POR...:

No entiendo porque Python me muestra la funcion que llama a ImprimeDoble como parte del traceback si en este caso no se esta llamando a la función catDoble. Lo que yo entiendo es que en _main_ se hizo una llamada a ImprimeDoble y se le paso un argumento que quiere hacer referencia a una variable local definida en otra función, entonces ¿Porque no solo mostrar el error de que ImprimeDoble no puede llamar a una variable local de otra funciona?
¿Porque mostrar en el traceback catDoble cuando acá no tiene nada que ver a diferencia de main e ImprimeDoble?

El libro que estamos siguiendo es el siguiente: http://greenteapress.com/thinkpython2/thinkpython2.pdf

Muchas gracias,

Toty
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder