Errores que los estudiantes suelen cometer al evitar Python
6 errores que los principiantes en Python suelen cometer los principiantes
6 errores clásicos de novatos en Python
La fuente del error de sintaxis
Cuando ejecuta el código Python, el intérprete primero lo analizará para convertirlo a
código de bytes Python y luego lo ejecutará. El intérprete descubrirá cualquier sintaxis no válida en Python durante la primera fase de ejecución del programa (también llamada fase de análisis). Si
el intérprete no puede analizar correctamente su código Python, significa que está utilizando una sintaxis no válida
en alguna parte de su código. El intérprete intentará mostrarte dónde ocurre el error
.
Cuando aprendes Python por primera vez, encontrarte con SyntaxError puede ser frustrante
. Python intentará ayudarle a determinar dónde está la sintaxis no válida en su código, pero los rastreos que proporciona pueden resultar un poco confusos. A veces el código al que apunta es realmente bueno.
Nota: Si su código es sintácticamente correcto, puede generar otras excepciones que no sean SyntaxError.
1. Abuso del operador de asignación (=)15
Hay varias situaciones en Python en las que no se puede asignar un valor a un objeto. Algunos ejemplos
se asignan a literales y llamadas a funciones. En el bloque de código siguiente puede ver algunos
ejemplos de intentos de hacer esto y los rastros de SyntaxError resultantes:
6 errores clásicos de novato en Python
gt ;gt;gt;len('hello*) = 5
Archivo "estd ingt;", línea 1
Error de sintaxis: can'tassigntofunctioncall p>
gt; gt;gt;*foo°m 1
Archivo "estd ingt;", línea 1
Error de sintaxis: can'tassigntoliteral
) gt;1m'foo '
Archivo "estd ingt;", línea 1
SyntaxError: can'tassigntoliteral
El primer ejemplo intenta convertir el valor 5 se asigna al len () llamar. El mensaje SyntaxError
es muy útil en esta situación. Le dice que no puede asignar un valor a una llamada de función.
El segundo y tercer ejemplo intentan asignar una cadena y un número entero al literal.
Las mismas reglas se aplican a otros valores literales. El mensaje de rastreo nuevamente indica que el problema ocurrió cuando intentó asignar un valor al literal
.
Lo más probable es que tu intención no sea asignar un valor a una llamada literal o a una función. Esto puede suceder, por ejemplo, si
accidentalmente omites un signo igual adicional (=), lo que convierte la tarea
en una comparación. Como se muestra a continuación, la comparación es válida:
gt;gt;gt;len('hello') == 5
Verdadero
2. , omisión o uso indebido de palabras clave de Python
6 errores clásicos de novatos en Python
Las palabras clave de Python son un grupo de palabras protegidas que tienen un significado especial en Python
Yi. Estas palabras no se pueden utilizar como identificadores, nombres de variables o funciones en el código. Son
son parte del lenguaje y solo pueden usarse en el contexto permitido por Python.
|Hay tres formas comunes de utilizar palabras clave incorrectamente:
①Palabras clave faltantes;
②Palabras clave faltantes;
③Abuso de palabras clave;
Si escribe mal una palabra clave en el código Python, recibirá
SyntaxError. Por ejemplo, si la palabra clave for está escrita incorrectamente, ocurrirá lo siguiente:
gt; gt; fro i in range(18):
Archivo "lt; stdingt; ", línea 1
de i in range(10):
SyntaxError: sintaxis no válida
El mensaje muestra SyntaxError: sintaxis no válida, pero eso no es muy útil
. El rastreo apunta a la primera ubicación donde Python podría detectar el error. Para corregir este tipo de error, asegúrese de que todas las palabras clave de Python estén escritas correctamente.
Otro problema común con las palabras clave es cuando te olvidas de escribirlas por completo:
6 errores clásicos de novato en Python
gt;gt;gt for i range; (18):
Archivo "lt;stdingt;", línea 1
para i range(18):
Error de sintaxis: sintaxis no válida
Nuevamente, el mensaje de excepción no es tan útil, pero el rastreo intenta indicarle la dirección correcta
. Si retrocede desde el cursor, puede ver que falta la palabra clave in en la sintaxis del bucle for.
También puedes abusar de las palabras clave protegidas de Python. Recuerde, las palabras clave sólo están permitidas
en determinadas circunstancias. Si los usa incorrectamente, su
código Python contendrá una sintaxis no válida. Un ejemplo común es usar continuar o interrumpir fuera de un bucle
. Esto puede suceder fácilmente durante el desarrollo, cuando
estás implementando cosas y mueves la lógica fuera del bucle:
gt;names m['pam', 'jin ', * michael']
if'jim'in nanos:
imprimir(*jim encontrado')
romper
Archivo "estd ingt ;", línea 3
SyntaxError: 'break'outside loop
sgt; if'jim'in nanes:
print(*jin found ')
continuar
Archivo "estd in", línea 3
Error de sintaxis: 'continuar'no está correctamente en el bucle
Errores de novato clásico en Python 6
Aquí, Python hace un buen trabajo al decirte qué salió mal exactamente. Los mensajes
"'romper' el bucle externo" y "continuar' el bucle incorrectamente" pueden ayudarte a determinar
qué hacer. Si este código estuviera en un archivo, Python también
tendría un símbolo de intercalación que apunta a la palabra clave mal utilizada.
Otro ejemplo es si intentas asignar una palabra clave de Python a una variable o usas la palabra clave
para definir una función:
gt;gt;gt ; pass=True
Archivo "estd ingt;", línea 1
pass=True
SyntaxError: sintaxis no válida
gt; ; gt; def pass():
Archivo "estd ingt;", línea 1
def pass():
SyntaxError: sintaxis no válida
p>3. 6 errores clásicos de principiante en Python
Por lo general, la causa de la sintaxis no válida en el código Python es que faltan o no coinciden los corchetes
y los corchetes o las comillas. . Estos son difíciles de detectar en líneas muy largas de corchetes anidados o en bloques de varias líneas más largos
. Con el rastreo inverso de Python, puede detectar comillas que faltan o no coinciden:
gt;message-*don
Archivo"lt;stdingt; ", línea 1
message='no'
SyntaxError: sintaxis no válida
6 errores clásicos de principiante en Python
Aquí, el rastreo apunta a un código no válido, donde hay es una t'
después de la comilla simple de cierre. Para resolver este problema, puede realizar uno de los siguientes dos cambios
①Escapar de las comillas simples con una barra invertida ('no');
②Escapar de las comillas simples con una barra doble; quote Encierre toda la cadena ("no");
Otro error común es olvidar cerrar una cadena. Para cadenas entre comillas dobles y simples
la situación y el rastreo son los mismos:
gt;gt;gt;message="Esta es una cadena abierta
Archivo "lt; stdingt;", línea 1
mensaje-"Esta es una cadena abierta
Error de sintaxis: EOL al escanear el literal de cadena
4. Sintaxis incorrecta del diccionario
Viste antes que si colocas una coma fuera de un elemento del diccionario, es posible que obtengas
SyntaxError. Otra forma de sintaxis no válida para los diccionarios de Python es usar el signo igual
(=) para separar claves y valores en lugar de usar dos puntos:
gt;gt;gt; edades·{ 'pam'-24}
Archivo "lt; stdingt;", línea 1
edades-{'pam'-24}
Error de sintaxis : sintaxis no válida
Nuevamente, este mensaje de error no es muy útil. Sin embargo, las líneas repetidas y los signos de intercalación
son muy útiles. ¡Apuntan directamente al personaje en cuestión!
6 errores clásicos de principiante en Python
gt;gt;gt;ages=dict(pam=24)
gt;gt;gt;ages p>
{'pam': 24}
Este tipo de problema es común si confundes la sintaxis de Python con la de otros lenguajes de programación
También verás esto si confundes el acto de definir un diccionario con una llamada a dict(). Para solucionar este problema, puede reemplazar el signo igual con dos puntos.
También puedes
cambiar a usar dict):
5. Usar abreviaturas incorrectas
Otros lenguajes de programación usan llaves para representar bloques de código. mientras que Python usa espacios.
Esto significa que Python espera que los espacios en blanco en el código se comporten de manera predecible. Si una línea en un bloque de código
contiene una cantidad incorrecta de espacios, generará un error de sangría:
Esto puede ser difícil de ver, pero la línea 5 solo tiene una sangría de 2 espacios. Debería ser lo mismo que for loop
f foo():
for i in range(10):
print(i)
print ('done')
foo()
La declaración del anillo es la misma, con 4 espacios más. Afortunadamente, Python hace que sea fácil detectar esto y le dirá cuál es el problema muy rápidamente.
Sin embargo, existen algunas ambigüedades aquí. ¿La línea print('done') está después del bucle for
o dentro del bloque del bucle for? Cuando ejecute el código anterior, verá el siguiente
error:
p> p>
6 errores clásicos de principiante en Python
Archivo "indentation.py", línea 5
print('done*)
Sangría Error: un sangría no coincide con ningún nivel de sangría externo
Aunque el rastreo se parece mucho al rastreo de SyntaxError, en realidad es un nivel de sangría que no coincide con ningún otro nivel de sangría. En otras palabras,
Error de sangría. Los mensajes de error también son útiles. Le indica que la sangría de la línea
print('done') tiene una sangría de 2 espacios, pero Python no puede encontrar ninguna otra
que coincida con este nivel de sangría de líneas de código. . Puede solucionar rápidamente este problema asegurándose de que su código esté alineado con el nivel de sangría esperado.
6. Definir y llamar funciones
SyntaxError:
gt;gt;gt;def fun O;
Archivo "estd ingt ;", línea 1
def fun() ;
SyntaxError: sintaxis no válida
El rastreo aquí es muy útil, el signo de intercalación apunta directamente al carácter problemático . Puede limpiar esta sintaxis no válida en Python reemplazando el punto y coma con dos puntos.
Además, los argumentos de palabras clave en las definiciones de funciones y las llamadas a funciones deben estar en el orden correcto.
Puede encontrar una sintaxis no válida en Python al definir o llamar funciones.
Por ejemplo, si usa un punto y coma en lugar de dos puntos al final de la definición de una función, verá
6 errores clásicos de novato en Python
Orden . Los argumentos de palabras clave siempre siguen a los argumentos posicionales. Si no se utiliza este orden, se producirá
SyntaxError:
gt;gt;gt; def fun(a, b):
print(a, b). )
mmm
gt; gt; fun(a-1, 2)
Archivo "lt; stdingt;", línea 1
Error de sintaxis: el argumento posicional sigue al argumento de palabra clave