Pregunta

Siempre he usado pestañas para sangría cuando hago programación en Python.Pero luego me encontré con una pregunta aquí en SO donde alguien señaló que la mayoría de los programadores de Python usan espacios en lugar de tabulaciones para minimizar los errores entre editores.

¿Cómo eso hace la diferencia?¿Existen otras razones por las que se usarían espacios en lugar de tabulaciones para Python?¿O simplemente no es cierto?

¿Debo cambiar mi editor para insertar espacios en lugar de tabulaciones de inmediato o seguir como antes?

¿Fue útil?

Solución

Porque PEP-8 nos dice que usemos espacios.

Otros consejos

¿Estás cansado de perseguir errores tipográficos de sangría (8 espacios?no, 7 ups 9...) Cambié mis fuentes a "solo pestañas".

1 tabulación == 1 nivel de sangría, punto

La cuestión es:Si desea mostrar la sangría con un ancho de 4, 8 o pi/12 caracteres, simplemente cambie la configuración en su editor de texto, no se metas con el código.

(Personalmente, uso la pestaña de ancho de 4 caracteres...pero algunos preferirían 3 u 8 espacios, o incluso usar fuentes de ancho variable).

Así habló el Señor:Sangrarás con cuatro espacios.Ni mas ni menos.Cuatro será el número de espacios que sangrarás, y el número de tus sangrías será cuatro.No sangrarás ocho, ni sangrarás dos, salvo que luego procedas al cuatro.Las pestañas ya están disponibles. - Georg Brandl

UTILICE UN EDITOR QUE MUESTRA CARACTERES DE TAB (todos espacios en blanco, para el caso).Estás programando, no escribiendo un artículo.

Yo uso pestañas.No hay lugar para un error de un espacio en las pestañas (si puedes verlas).El problema ES que la gente usa diferentes editores, y lo único común en el mundo es:tab==sangría, como arriba.Algún tipo llega con la tecla de tabulación configurada en un número incorrecto de espacios o lo hace manualmente y hace un desastre.TAB y utilice un editor real.(Esto no es sólo contrario al PEP, sino que también se trata de C/C++ y otros lenguajes independientes de los espacios en blanco).

/se baja de la tribuna

Mi razón principal para usar tabulaciones en lugar de espacios es la tecla de retroceso.Si estoy en una línea y quiero retroceder y eliminar una sangría solo en esa línea, tengo que retroceder 4 veces si fueran espacios;mientras que solo necesito presionarlo una vez si es una pestaña.

Continuaré usando tabulaciones porque, como dije antes, es más fácil convertir de tabulaciones a espacios, pero no al revés.

Estoy pensando que quiero escribir un programa simple que convierta código con espacios en código con tabulaciones, porque odio los espacios.¡Me vuelven loco!

¡Oh!Y usar las teclas de flecha para navegar hacia la izquierda y hacia la derecha siempre es un dolor de cabeza cuando se trata de espacios.

ACTUALIZAR:Sublime Text 3 ahora elimina una pestaña suave completa con la tecla de retroceso;sin embargo, la navegación con las teclas de flecha sigue siendo tediosa.

Tabs vs. Spaces for Indentation

ACTUALIZAR:ahora uso código vs y también escribió un Extensión TabSanity para que resuelva retroceso, eliminación y navegación con teclas de flecha.

TabSanity Extension in Action

La forma más "pitónica" es utilizar 4 espacios por nivel de sangría.Sin embargo, el intérprete de Python reconocerá espacios o tabulaciones.El único problema eres tú nunca debe mezclar espacios y tabulaciones, Elige uno o el otro.Dicho esto, la especificación recomienda espacios, la mayoría de los desarrolladores usan espacios, así que, a menos que tengas una muy buena razón para no hacerlo, yo diría que uses espacios.

Hasta donde puedo decir, estos son los pros y los contras de las pestañas frente a los espacios.

Ventajas de las pestañas:

  • Se requieren menos pulsaciones de teclas para aplicar sangría, quitar sangría y atravesar la sangría.(Incluso si su IDE tiene cierta capacidad de sangría espacial, nunca será tan bueno como las pestañas).
  • Diferentes programadores pueden usar diferentes tamaños de visualización de pestañas según lo deseen.
  • Nunca puedes tener el cursor "dentro" de un carácter de sangría.Por ejemplo, digamos que está copiando algunas líneas, con las pestañas puede hacer clic vagamente cerca del inicio de una línea para comenzar su selección y obtendrá toda la primera pestaña.Con espacios, es probable que te pierdas el primer carácter de espacio a menos que alcances el pequeño objetivo entre este y el margen.De manera similar, para eliminar una sangría de una línea, la mayoría de los editores no manejan bien presionar la tecla de retroceso si el cursor está en medio de un carácter de sangría de cuatro espacios.Generalmente eliminará un espacio.Con pestañas funciona como se esperaba.
  • Coherencia con otros idiomas, por lo que no es necesario configurar el editor para utilizarlo, p.pestañas para C++/Java y espacios para Python.
  • Las sangrías incorrectas pueden ser más obvias (es decir,una pestaña extra es mucho más grande que un espacio extra).

Contras de las pestañas:

  • La mayoría de los programadores de Python usan espacios, por lo que irías en contra de las convenciones.
  • Usar espacios para alinear declaraciones de varias líneas es más fácil que usar tabulaciones.Tú podría use tabulaciones para sangría y espacios para alineación, ¡pero parece un poco arriesgado en Python!

Hay algunos problemas que algunas personas exageran:

  1. Es posible que aparezcan espacios sueltos en la sangría con pestañas que estropeen las cosas:Prácticamente todos los IDE/editores admiten la visualización de espacios en blanco, ¡y es casi igual de probable que obtengas pestañas perdidas en las sangrías del espacio!De todos modos, no veo que esto sea un error común.Además, mayoría Python detectará los errores de sangría y los buenos IDE deberían poder resaltar diferentes sangrías.

  2. No puedes alinear cosas fácilmente con pestañas:Esto es cierto si busca una alineación perfecta de caracteres, pero PEP-8 recomienda no hacerlo, y Python no funciona bien con declaraciones de varias líneas de todos modos.

  3. Las personas tienen configuraciones diferentes para el tamaño de visualización de pestañas en sus editores, por lo que su código se verá diferente en diferentes lugares:Sí, esa es en realidad una característica beneficiosa de las pestañas.

Comencé a usar espacios para ser consistente con otro código Python, pero para ser honesto, es tan frustrante que probablemente volveré a usar pestañas.Mucho depende de las capacidades de su IDE, pero en mi experiencia, ninguna cantidad de soporte IDE para sangría de espacio es tan buena como simplemente usar pestañas.

Así que a menos que tú en realidad No me gusta ser inconsistente con mayoría (¡presumiblemente no todos!) Código Python, use pestañas y active la visualización de espacios en blanco y el resaltado de sangría (si está disponible).La razón más importante para mí es la facilidad de selección y la reducción (bastante significativa en mi opinión) de las pulsaciones de teclas.Algunas convenciones son estúpidas.

Actualizar:Descubrí que hay un editor en todo el mundo (excluyendo tonterías como Vim) que admite adecuadamente espacios como sangría:Átomo.Tiene una opción llamada "tabulaciones atómicas" que hace que 4 espacios se comporten como si fuera una pestaña en todos los aspectos (excepto poder cambiar su tamaño).Lamentablemente, Atom es un editor bastante lento y sobrecargado, pero es una gran característica y si te ves obligado a usar espacios, podría ser una buena opción.Esperemos que algún día otros editores empiecen a apoyarlo. Aquí está el problema de VSCode.

Hace poco me encontré con un artículo titulado Pitón:Mitos sobre la sangría que analiza esta y otras cuestiones relacionadas.El artículo tiene buenas razones para recomendar el uso de espacios al escribir código Python, pero ciertamente hay lugar para el desacuerdo.

Creo que es cierto que la mayoría de los programadores de Python utilizan sólo espacios.

Utilice un editor que le permita insertar espacios hasta la tabulación cuando presione la tecla TAB, en lugar de insertar un carácter .Y luego olvídalo.

PUEDES mezclar tabulaciones y espacios...PERO se considera que una pestaña tiene la misma sangría que 8 espacios, por lo que, a menos que su editor esté configurado para considerar que una pestaña tiene 8 espacios, tendrá problemas al mezclarlos.

El único inconveniente que experimento al usar espacios en lugar de tabulaciones es que no se puede eliminar fácilmente un nivel de sangría;tienes que eliminar cuatro espacios en lugar de solo una pestaña.

Las pestañas gobiernan.El mismo argumento para los bucles anidados y desea que el bucle externo "regrese" 1 nivel.Consejo:Si desea convertir el antiguo código de Python plagado de espacios en pestañas, utilice la utilidad TabOut disponible como ejecutable en http://www.textpad.com/add-ons/.

Creo firmemente que cualquiera que sea la convención histórica, las pestañas son simplemente una mejor opción y deberían reemplazar los espacios en cada línea futura de código Python escrita.Como echar a un tirano incompetente.Mi razón fundamental para esto es: La simplicidad como valor fundamental..¿Usar dos o quizás cuatro caracteres para la tarea semántica de uno?No hay justificación más allá de la tradición, en mi opinión.

El error de editor a editor ocurre cuando tienes sangría mixta dentro de un archivo.Esto surge de la siguiente manera:un bloque de código tiene una sangría de 4 espacios, y luego un nivel de sangría "en", se sangra con tabulaciones.Ahora bien, el pagano que hizo esto (mezclar pestañas y espacios) lo tenía, por lo que sus pestañas también tienen 4 espacios, por lo que no ve problemas, y Python no ve problemas.

Ahora nuestra víctima llega más tarde y tiene sus pestañas configuradas en 8 espacios.Ahora nuestras víctimas piensan que el código parece alterado y lo arregla por eliminando un nivel de sangría, que ahora hace el código mirar como si todavía tuviera 2 niveles de sangría, pero es realmente un nivel.En este punto se desata el infierno.

La lección aquí es que nunca, jamás, debes mezclar tabulaciones y espacios.Si sigue esto, será fácil volver a sangrar su código en espacios o tabulaciones, independientemente de cuál utilice personalmente.La mejor manera de asegurarse de no mezclar tabulaciones y espacios es ejecutar siempre python con -tt, lo que producirá un error cuando se mezclen tabulaciones y espacios.

En cuanto a tabulaciones y espacios, yo personalmente uso tabulaciones para separar la sangría de la apariencia; es mucho más fácil cambiar la apariencia del código cuando tiene sangría con tabulaciones que con espacios.Sé que esto va en contra de lo que hacen el 99% de los programadores de Python, pero esa es mi opinión. personal preferencia, y en cualquier caso es fácil convertir un archivo con pestañas a uno espaciado.Lo contrario no siempre es cierto, ya que accidentalmente puedes eliminar 4 espacios en cadenas, etc.

Cuando estaba aprendiendo Python por primera vez, me desanimó un poco la idea de un espacio en blanco significativo, ya que la mayoría de los lenguajes para usarlo son inflexibles.Dicho esto, me impresionó la capacidad de Python para comprender una variedad de estilos de sangría.Al considerar qué estilo utilizar para un nuevo proyecto, creo que es importante tener dos cosas en cuenta.

  1. Primero, es importante entender cómo Python interpreta la sangría.Bryan Oakley mencionó la posibilidad de errores uno por uno al usar pestañas, pero esto en realidad no es posible con la configuración predeterminada del intérprete.Hay una mejor explicación de esto en Aprendiendo Python, de O'Reilly Medios.

Básicamente, hay una variable (que se puede cambiar incluyendo un comentario en la parte superior de un archivo fuente # tab-width:) que define el ancho de la pestaña.Cuando Python encuentra una pestaña, aumenta la distancia de sangría al siguiente múltiplo del ancho de tabulación.Por lo tanto, si se ingresa un espacio seguido de una tabulación a la izquierda del archivo, el siguiente múltiplo del ancho de tabulación es 8.Si se ingresa a una pestaña sola, sucede lo mismo.

De esta forma, es seguro, si tu editor está configurado correctamente, utilizar tabulaciones, e incluso mezclar tabulaciones y espacios.Siempre que establezca las tabulaciones de su editor en el mismo ancho que la declaración de ancho de tabulación de Python (u 8 si está ausente).Generalmente es una mala idea utilizar un editor con un ancho de tabulación que no sea de 8 espacios, a menos que especifique el ancho de tabulación en el archivo.

  1. En segundo lugar, gran parte del diseño sintáctico de Python tiene como objetivo fomentar la legibilidad del código y un estilo coherente entre los programadores del mismo proyecto.Dicho esto, la pregunta es, para cualquier proyecto en particular, qué hará que el código sea más legible. por las personas que trabajan en el proyecto.Ciertamente es una buena idea mantener un estilo de sangría consistente, pero dependiendo de la plataforma y el editor utilizado por el proyecto, un estilo diferente puede tener sentido para diferentes proyectos.Si no hay ninguna razón de peso para no cumplir con PEP 8, entonces tiene sentido hacerlo, porque se ajustará a lo que la gente espera.

Me he encontrado con proyectos que utilizan con éxito una combinación de tabulaciones y espacios.Básicamente, los espacios se utilizan para sangrar secciones pequeñas, donde el hecho de que esté en una sección sangrada es relativamente poco importante;mientras que las pestañas se utilizan para llamar la atención del lector sobre una característica estructural importante.Por ejemplo, las clases comienzan con una pestaña, cuyas comprobaciones condicionales simples dentro de una función utilizan dos espacios.

Las pestañas también son útiles cuando se trata de grandes bloques de texto con sangría de varios niveles.Cuando se eliminan 3 o 4 niveles de sangría, es mucho más fácil alinear con la pestaña adecuada que alinear con la cantidad adecuada de espacios.Si un proyecto no utiliza el estilo recomendado por PEP 8, probablemente sea mejor escribir una guía de estilo en un archivo en algún lugar para que el patrón de sangría siga siendo consistente y otras personas puedan leer explícitamente cómo configurar su editor para que coincida.

Además, Python 2.x tiene una opción -t para emitir advertencias sobre tabulaciones y espacios mixtos y -tt para emitir un error.Esto solo se aplica a pestañas y espacios mixtos dentro del mismo ámbito.Python 3 supone -tt y hasta donde he descubierto, no hay forma de desactivar esa verificación.

Soy principalmente un programador de C++, pero a veces mis proyectos incluyen pequeñas cantidades de Python.Utilizo pestañas para sangrar mi código C++.Esto significa que tengo tres opciones aquí:

  1. Utilice pestañas en C++ y espacios en Python.Esto permite que mis archivos C++ permanezcan como están y sigo la recomendación PEP-8, pero soy inconsistente con mi proyecto.
  2. Cambie mi código C++ para usar espacios.Esto permite que todos mis archivos dentro de mi proyecto sean consistentes y sigo la recomendación PEP-8, pero requiere que regrese y cambie todos mis archivos C++.Considero que esto es algo malo porque prefiero las pestañas.
  3. Utilice pestañas en mi código C++ y código Python.Esto hace que todo mi proyecto sea consistente y me permite usar mi estilo de sangría preferido:pestañas.La desventaja es que no sigo el estándar PEP-8.

Para mis proyectos, generalmente opto por la opción 3.

Experiencia y PEP-8 Ambos concluyen claramente que mezclar espacios y TABs debe evitarse.Si desea mezclarlos, debe visualizar los espacios en blanco en el IDE, pero luego pierde la ventaja de que la sangría de Python hace que los ámbitos sean fácilmente visibles.La visualización de espacios en blanco en un IDE satura la pantalla.

Si son TAB o espacios, entonces deben ser espacios por una sencilla razón:Se pueden cambiar casi todos los IDE y editores de texto para reemplazar automáticamente las pestañas con espacios, pero no ocurre lo contrario.

Aunque existen IDE que pueden convertir automáticamente los espacios iniciales de una línea en pestañas, esto eventualmente conducirá a tener una combinación de pestañas y espacios.Considere declaraciones de varias líneas, como llamadas a funciones con muchos parámetros o cadenas de documentos.Si bien también se debe evitar el "arte ascii", puede suceder fácilmente por accidente que quede un solo espacio después de las pestañas principales.

Otras respuestas trajeron varios argumentos a favor de las pestañas:

  • Golpear TAB es más eficiente.Por supuesto, esto es cierto, pero todos los editores de texto permiten insertar inmediatamente la cantidad deseada de espacios cuando se presiona una tecla de tabulación.
  • Sangrar/Sangrar es más fácil cuando solo tienes que eliminar una pestaña en lugar de 2/3/4/8 espacios.Es cierto, pero la mayoría de los editores de texto permiten hacer esto automáticamente de todos modos:Seleccionar bloque, sangrar/sangrar son funciones básicas de un editor de programación, como comentar/descomentar.Si un editor de texto no tiene esto implementado, al menos debería tener una funcionalidad macro fácil de usar con la que se pueda lograr lo mismo.
  • A diferentes programadores les gustan diferentes anchos de sangría.Esto es cierto, y una clara ventaja de utilizar TABsolo s.El problema es la interacción con otros individuos y/o equipos.Para que esto funcione en el mundo real, todos tendrían que estar de acuerdo en usar TABsolo s.Como esto no ha sucedido, no funciona de todos modos.En un escenario del mundo real, hay un conjunto de pautas de codificación que un proyecto acepta de todos modos, y el método de sangría es ciertamente uno de ellos, incluso en otros lenguajes de programación donde las implicaciones son "sólo" a nivel visual.

En mi humilde opinión, el punto principal en el que faltan la mayoría (si no todas) las respuestas aquí es la interacción entre equipos o individuos, especialmente en escenarios donde la lista de participantes no se conoce al principio.Cuando el código se encuentra con el código, todos tienen que usar tabulaciones o todos tienen que usar espacios.No se puede mezclar sin tener problemas de funcionalidad.La gente no es perfecta.Las herramientas no son perfectas.Es por eso que en mi humilde opinión no deberíamos usar TABs en absoluto.

Ninguna respuesta está completa sin el enlace que Greg proporcionó en su respuesta. ya: Pitón:Mitos sobre la sangría

Cada uno tiene diferentes preferencias sobre la cantidad de código que se debe sangrar.Supongamos que comparte código con alguien y él o ella tiene diferentes preferencias con respecto a la sangría.Si las sangrías están en pestañas, tu amigo siempre puede cambiar el ancho de la pestaña en la configuración de su editor.Sin embargo, si las sangrías están en espacios, tu amigo tendrá que cambiar el código fuente si quiere configurarlo según sus preferencias.Luego, cuando reciba los cambios de su amigo, podrá decidir volver a cambiarlos según sus preferencias.En este caso, tendrá que lidiar con el tedio de cambiar los niveles de sangría de un lado a otro, o una persona debe adoptar las preferencias de la otra en el nivel de sangría.Si tanto usted como su amigo usan pestañas, el hecho de que tengan preferencias diferentes no es un problema, ya que cada uno puede ver diferentes niveles de sangría mientras el código permanece sin cambios.Por eso, en mi opinión, las tabulaciones son mejores que los espacios para sangría en todos los lenguajes de programación.

Existe un escenario en el que las pestañas simplemente no funcionan, a saber:Dependiendo del estilo de codificación que esté utilizando, es posible que necesite sangrar algunas líneas de código con una precisión de un espacio, es decir:

def foobar():
    x = some_call(arg1,
                  arg2)

En ese caso, utilizar únicamente pestañas no funcionará en absoluto;usar tabulaciones para la sangría principal y espacios para la subsangría funcionará, pero violará la regla estricta de no mezclar los dos.

Sin embargo, este no será el caso cuando se utilice un documento de convenciones/estilo de codificación que evite situaciones como en el ejemplo de código anterior.

El problema con el uso de espacios en lugar de tabulaciones es que el tamaño del archivo se vuelve increíblemente grande...Por ejemplo, un archivo con sangría de espacio de 500 KB podría reducirse a 200 KB al intercambiar espacios por pestañas, razón por la cual siempre uso pestañas.

Un tamaño de archivo más pequeño significa una carga, compilación y ejecución más rápida (en algunos casos), etc.

Para mí, no tiene sentido usar espacios, pero si alguien usa un editor que tiene problemas con las pestañas, entonces puede reemplazar " " con " " o " " o lo que sea...

Además de todos los argumentos ya enumerados, este me parece bastante importante (de Mitos sobre la sangría):

Además, las pestañas a menudo se destruyen o se convierten incorrectamente durante las operaciones de copiar y pegar, o cuando se inserta un fragmento de código fuente en una página web u otro tipo de código de marcado.

Otro argumento (aunque fuertemente específico del entorno) en contra de las pestañas es que son a veces falta en los teclados de los teléfonos.Probablemente esto podría solucionarse instalando un teclado alternativo, siempre que sea posible.

Un argumento para pestañas que nadie parecía haber mencionado todavía es que 1 pestaña es 1 carácter (0x09, 1 byte en el archivo), mientras que 4 espacios son 4 caracteres (4 veces 0x20, 4 bytes en el archivo);por lo tanto, el uso de espacios genera una pérdida de espacio 4 veces mayor.

Para concluir esta incoherente lista de argumentos, me gustaría citar la respuesta de Tim Peters en el Problema 7012:Las pestañas son mejores que los espacios para sangría:

El estándar de Python "Spaces Sone" es para código distribuido.Años de experiencia temprana nos enseñaron sin lugar a dudas que las pestañas causaron problemas interminables para compartido código (...)

¿Cómo eso hace la diferencia?

Algunos editores están configurados de forma predeterminada para reemplazar un solo carácter de tabulación con una cantidad determinada de caracteres de espacio, pero otros no.Si todos usan espacios, se puede ignorar esta diferencia en la configuración predeterminada del editor.

¿Existen otras razones por las que se usarían espacios en lugar de tabulaciones para Python?¿O simplemente no es cierto?

Sí, hay otras razones válidas, como lo señalaron muchas respuestas antes que yo."PEP-8" lo dice, sin embargo, NO es una de esas razones.Esto proviene del mito que se perpetúa a sí mismo de que PEP-8 es el estándar de codificación para todo Código Python, cuando en realidad es solo el estándar de codificación para el conjunto estándar de bibliotecas Python.Algunos afirman que PEP-8 es ampliamente aceptado y otros afirman que la mayoría de los programadores de Python usan espacios en lugar de tabulaciones.Me gustaría pedir pruebas de estas afirmaciones, ya que el número de votos en este sitio muestra CLARAMENTE que las masas prefieren las pestañas.Me parece bastante desafortunado que haya aceptado "PEP8 lo dice" como respuesta a su pregunta, cuando en realidad hay muchas otras respuestas que realmente explican las ventajas y desventajas relativas de los espacios y las pestañas.

¿Debo cambiar mi editor para insertar espacios en lugar de tabulaciones de inmediato o seguir como antes?

Depende, y la respuesta a esta última pregunta es dónde pensé que realmente podría agregar algo de valor a este hilo.En mi humilde opinión, independientemente del idioma que se utilice, el mejor estándar de codificación a utilizar depende de la situación en la que se encuentre:

  • Si comenzó a trabajar en una base de código ya existente:No seas difícil, sigue el estándar de codificación existente.
  • Si un equipo está comenzando un nuevo proyecto desde cero:discutir, decidir sobre un estándar de codificación al principio como equipo y atenerse a él
  • Si vas solo:Haz lo que sea que te haga sentir más feliz y productivo.

Entonces, ¿en qué situación te encuentras?

Finalmente, para dejar clara mi postura, para mis propios proyectos en solitario, uso pestañas porque tienen más sentido para mí y soy más productivo con ellas.

Creo que hay una solución para tener ambos:

  1. Compatibilidad con PEP-8 y uso de espacios
  2. Conveniencia de usar tabulación en lugar de 4 espacios

En Notepad++, vaya a "preferencias"--> "configuración de pestañas" y elija "Python" de la lista de la derecha.Luego asegúrese de que "tamaño de pestaña:4", y marque la casilla "reemplazar [tabulación] por espacio".En este caso, simplemente puede usar la tecla de tabulación para aplicar sangría, pero Notepad++ en realidad lo transforma en 4 espacios.

Esto es PEP 8 a julio de 2017:

Enter image description here

Parece que esta afirmación no deja lugar a ninguna otra opción.

Pero esto no es únicamente lo que nos cuenta PEP 8, unas líneas más adelante:

Enter image description here

En lo anterior, la primera afirmación expresa una preferencia para espacios, y la segunda declaración reconoce la existencia de código sangrado con tabulaciones y esta preferencia por algunos codificadores.

Entonces:PEP 8 es tolerante a la sangría de pestañas.Sin embargo, no tolera tabulación y espacio combinados para la sangría, lo cual, dado que la sangría en sí es obligatoria, es comprensible.

Quizás valga la pena mencionar que El estilo de codificación Python de Google también sigue la regla de los 4 espacios.

Hay otros varios argumentos y justificaciones a favor de pestañas o 4 espacios.

Si trabaja en una empresa que aplica PEP 8, o comparte regularmente su código con otras personas que siguen PEP 8, entonces el sentido común dicta 4 espacios.Estoy (tal vez estaba) acostumbrado a las pestañas de C/C++.Pero con un IDE configurado correctamente, la diferencia se vuelve mínima.

Utilice espacios en lugar de pestañas, por la única razón de que ganará más dinero :)

Árbitro.: Los desarrolladores que usan espacios ganan más dinero que aquellos que usan pestañas (Publicación del blog de Stack Overflow).

Así que aquí estoy, leyendo todas las respuestas y preguntándome cómo puedo cumplir con PEP-8 sin la molestia de presionar repetidamente el botón de retroceso solo para eliminar la sangría, y miro mi teclado para juegos Logitech con todos sus elegantes botones macro y una luz. La bombilla se enciende en mi cabeza.

Abrí el software de Logitech, definí un par de macros para los botones justo al lado del botón de pestaña y el problema se resolvió.

Un botón agrega cuatro espacios y el otro retrocede cuatro veces.Asombroso.Simplemente asombroso.También es muy fácil presionar los botones con mi meñique.

Mira, mira esto:" "<-- ¡cuatro espacios!¡Con solo presionar un botón!Si pudiera mostrarte los retrocesos, también lo haría.¡Consigue un teclado Logitech G105 y todos tus problemas desaparecerán!

Recién estoy comenzando, pero me resulta mucho más fácil usar tabulaciones que espacios, y no entiendo la advocación de espacios únicamente en PEP-8.Sublime Text 2 hace un gran trabajo al visualizar pestañas con la línea de puntos vertical blanquecina y, si bien hay casos en los que mezclo uno o dos espacios para alinear elementos de una lista o diccionario, no he experimentado una situación en la que eso ser algo perjudicial.

Me encantan las pestañas pero de alguna manera es incompatible con otra regla que me gusta:el límite de 80 columnas.

Si uno elige pestañas de 4 espacios e inserta 10 pestañas, entonces queda espacio para 40 caracteres para cumplir con el límite de 80 columnas.Si otro codificador prefiere pestañas de 8 espacios, la misma línea aparecerá con 120 caracteres y no aparecerá como una línea válida de 80 columnas.

Si desea definir un límite de 80 columnas, debe elegir una longitud para una pestaña.En este caso, tener x espacios o una tabulación de longitud x realmente no hace una diferencia.

Editar:hilo relacionado: ¿Mantener la longitud máxima de línea al usar tabulaciones en lugar de espacios?

Creo que uno de los principales beneficios de usar espacios es que eliminas la variabilidad en cómo se representa tu código fuente a través de la gran cantidad de herramientas externas que tienen que interactuar con la fuente más allá del editor de tu elección y cualquier configuración en la que lo hayan configurado.

Como algunos ejemplos concretos, considere la representación de cadenas de documentos de Python en una información sobre herramientas en Código de estudio visual, o en una herramienta de diferencias como Incomparablemente o WinMerge, herramientas de cobertura de código o rendimiento, etc.Básicamente, todas estas otras herramientas de interfaz pueden tener diferentes configuraciones sobre cómo se interpretan las pestañas y puede ser molesto y, a veces, desorientador encontrar cosas muy diferentes o fuera de la pantalla entre los conjuntos de herramientas en los que puede entrar y salir.

En pocas palabras, usted define la alineación en la fuente en lugar de negociar una configuración uniforme para el conjunto de herramientas de su arsenal.Los espacios se interpretan estrictamente en una fuente monoespaciada para brindar una alineación confiable y consistente en todo el conjunto de herramientas debido a la definición de la fuente, no a la implementación/configuración de representación de pestañas de un tercero.

Otro ángulo de esto es copiar la fuente de las pestañas iniciales para ejecutarlas en una terminal donde el carácter de tabulación puede desencadenar una finalización de tabulación inadvertida.Por ejemplo, si copia la siguiente fuente de Python (pestañas utilizadas como sangría),

cmd_create_db = '''CREATE TABLE test (
    Col1 INTEGER,
    Col2 INTEGER,
    Col3 TEXT)'''

Es posible que vea algo como lo siguiente (visto en la terminal integrada de Visual Studio Code)...

>>> cmd_create_db = '''CREATE TABLE test (
... .DS_StoreCol1 INTEGER,
... .DS_StoreCol2 INTEGER,
... .DS_StoreCol3 TEXT)'''
>>> cmd_create_db
'CREATE TABLE test (\n.DS_StoreCol1 INTEGER,\n.DS_StoreCol2 INTEGER,\n.DS_StoreCol3 TEXT)'

(Aparte:Me preguntaba si esta observación de coherencia entre las herramientas es una señal de la mente discriminatoria de un desarrollador inteligente que busca ordenar el mundo, lo que puede indicar un indicio de la diferencia salarial encontrada en Stack Overflow).

Utilizo sangría de dos espacios y un editor (kwrite) que inserta espacios en lugar de tabulaciones cuando presiono la tecla tab.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top