try print general exceptions example error catch all python syntax-error

print - try except python syntax



¿Qué hacer con "sangría inesperada" en python? (14)

¿Cómo rectifico el error "sangría inesperada" en python?


Al usar la sangría correcta. Python es consciente del espacio en blanco, por lo que debe seguir sus guidlines de sangría para bloques o obtendrá errores de sangría.


Asegúrese de utilizar la opción "insertar espacios en lugar de pestañas" en su editor. Luego puede elegir si quiere un ancho de pestaña, por ejemplo 4. Puede encontrar esas opciones en gedit en editar -> preferencias -> editor.

línea de fondo: USE ESPACIOS no pestañas


Ejecute su código con la opción -tt para averiguar si está usando pestañas y espacios de manera incoherente.


En Python, el espaciado es muy importante, esto le da a la estructura de sus bloques de código. Este error ocurre cuando desordene la estructura de su código, por ejemplo de esta manera:

def test_function() : if 5 > 3 : print "hello"

También puede tener una combinación de pestañas y espacios en su archivo.

Sugiero que utilices un editor de sintaxis python como PyScripter o Netbeans


Este error también puede ocurrir al pegar algo en el intérprete de Python (terminal / consola).

Tenga en cuenta que el intérprete interpreta una línea vacía como el final de una expresión, por lo que si pega algo como

def my_function(): x = 3 y = 7

el intérprete interpretará la línea vacía antes de que y = 7 como el final de la expresión, es decir, que haya terminado de definir su función, y la siguiente línea - y = 7 tendrá indentación incorrecta porque es una expresión nueva.


Hay un truco que siempre funcionó para mí:

Si tiene una sangría inesperada y ve que todo el código está perfectamente sangrado, intente abrirlo con otro editor y verá qué línea de código no está sangrada.

Me pasó cuando usé vim, gedit o editores como ese.

Intenta usar solo 1 editor para tu código.


Notepad ++ le estaba dando al espacio de tabulación correcto pero finalmente se encontró el problema de sangría en el editor de texto Sublime.

Utilice el editor de texto Sublime y vaya línea por línea


Python utiliza el espaciado al comienzo de la línea para determinar cuándo comienzan y terminan los bloques de código. Los errores que puede obtener son:

Sangría inesperada Esta línea de código tiene más espacios al principio que el anterior, pero el anterior no es el inicio de un subbloque (por ejemplo, si / while / for). Todas las líneas de código en un bloque deben comenzar exactamente con la misma cadena de espacios en blanco. Por ejemplo:

>>> def a(): ... print "foo" ... print "bar" IndentationError: unexpected indent

Este es especialmente común cuando se ejecuta python de forma interactiva: asegúrese de no poner ningún espacio adicional antes de sus comandos. (¡Muy molesto al copiar y pegar código de ejemplo!)

>>> print "hello" IndentationError: unexpected indent

Unindent no coincide con ningún nivel externo de sangría. Esta línea de código tiene menos espacios al comienzo que el anterior, pero igualmente no coincide con ningún otro bloque del que pueda formar parte. Python no puede decidir a dónde va. Por ejemplo, a continuación, ¿se supone que la impresión final es parte de la cláusula if o no?

>>> if user == "Joey": ... print "Super secret powers enabled!" ... print "Revealing super secrets" IndendationError: unindent does not match any outer indentation level

Espera un bloque sangrado. Esta línea de código tiene el mismo número de espacios al comienzo que el anterior, pero se esperaba que la última línea comenzara un bloque (por ejemplo, si / while / para instrucción, definición de función).

>>> def foo(): ... print "Bar" IndentationError: expected an indented block

Si quiere una función que no hace nada, use el pase de comando "no-op":

>>> def foo(): ... pass

Se permite mezclar pestañas y espacios (al menos en mi versión de Python), pero Python supone que las pestañas tienen 8 caracteres, lo que puede no coincidir con tu editor. Solo diga "no" a las pestañas. La mayoría de los editores les permiten ser reemplazados automáticamente por espacios.

La mejor manera de evitar estos problemas es usar siempre un número constante de espacios cuando sangra un subbloque, e idealmente use un IDE bueno que resuelva el problema por usted. Esto también hará que tu código sea más legible.


Si está escribiendo Python usando Sublime y recibiendo errores de sangría,

ver -> sangría -> convertir sangría a espacios

El problema que estoy describiendo es causado por el editor de texto Sublime. El mismo problema podría ser causado por otros editores también. Básicamente, el problema tiene que ver con Python que quiere tratar las sangrías en términos de espacios frente a varios editores que codifican las sangrías en términos de pestañas.


Si la sangría se ve bien, eche un vistazo para ver si su editor tiene una opción "Ver espacio en blanco". Habilitar esto debería permitir encontrar dónde se mezclan espacios y pestañas.


Simplemente copie su script y ponga "" "su código completo" "" ...

especifica esta línea en una variable .. como,

a = """ your python script """ print a.replace(''here please press tab button it will insert some space"," here simply press space bar four times") # here we replacing tab space by four char space as per pep 8 style guide..

ahora ejecuta este código, en Sublime Editor usando ctrl + b, ahora imprimirá el código sangrado en la consola. Eso es


Todo lo que necesita hacer es eliminar espacios o espacios de pestañas desde el inicio de los siguientes códigos

de django.contrib import admin

Registre sus modelos aquí.

de .models import Myapp admin.site.register (Myapp)


Un problema que no parece haberse mencionado es que este error puede surgir debido a un problema con el código que no tiene nada que ver con la sangría.

Por ejemplo, tome la siguiente secuencia de comandos:

def add_one(x): try: return x + 1 add_one(5)

Esto devuelve un IndentationError: unexpected unindent cuando el problema es, por supuesto, una falta, except: instrucción.

Mi punto: verifica el código de arriba donde se informa la sangría (des) inesperada!


Active los espacios en blanco visibles en cualquier editor que esté utilizando y active las pestañas de reemplazo con espacios.

Si bien puedes usar pestañas con Python, las pestañas de mezcla y el espacio suelen generar el error que estás experimentando. Reemplazar pestañas con 4 espacios es el enfoque recomendado para escribir el código de Python.