¿Hay alguna forma de codificar en Python sin los criterios de tabulación, sangría y espacio en blanco?

Quiero comenzar a usar Python para proyectos pequeños, pero el hecho de que una pestaña o sangría mal colocada pueda generar un error de comstackción realmente me pone de los nervios. ¿Hay algún tipo de configuración para desactivar esto?

Actualmente estoy usando NotePad ++. ¿Hay tal vez un IDE que se ocuparía de las tabs y sangría?

Actualmente estoy usando NotePad ++. ¿Hay tal vez un IDE que se ocuparía de las tabs y sangría?

Me gustaron las extensiones pydev de eclipse para eso.

 from __future__ import braces 

No. La sangría como gramática es una parte integral del lenguaje Python, para bien o para mal.

Emacs! En serio, su uso de “tabulador es un comando , no un personaje “, es absolutamente perfecto para el desarrollo de Python.

Todos los problemas de espacios en blanco que tenía cuando estaba iniciando Python eran el resultado de la combinación de tabulaciones y espacios. Una vez que configuré todo para usar uno u otro, dejé de tener problemas.

En mi caso, configuré UltraEdit & vim para usar espacios en lugar de tabs.

No, no hay. La sangría es syntax de Python. Usted puede:

  1. Usa tabnanny.py para verificar tu código
  2. Use un editor que tenga en cuenta la syntax que resalta dichos errores (vi hace eso, emacs apuesto a que sí, y luego, la mayoría de los IDE también lo hacen)
  3. (exagerado) escribe un preprocesador propio para convertir llaves (o cualquier bloque delimitador que ames) en sangría

pirobeos

No es compatible.

No lo creo, ya que Python es un lenguaje delimitado por espacios en blanco. Quizás un editor de texto o IDE con sangría automática sería de ayuda. ¿Qué estás usando actualmente?

Debe desactivar los caracteres de tabulación en su editor cuando esté trabajando con Python (siempre, en realidad, IMHO, pero especialmente cuando está trabajando con Python). Busque una opción como “Use espacios para tabs”: cualquier editor decente debería tener una.

Es posible escribir un preprocesador que tome un código con sangría aleatoria con palabras clave pseudo-python como “endif” y “endwhile” y guarde correctamente las cosas. Tenía que hacer esto cuando utilizaba python como un lenguaje “similar a ASP”, porque toda la noción de “sangría” se vuelve un poco borrosa en ese entorno.

Por supuesto, incluso con tal cosa que realmente debe sangrar sanamente, en ese punto el conveter se vuelve superfluo.

Estoy de acuerdo con Justin y otros: elija un buen editor y use espacios en lugar de tabulaciones para la sangría y el espacio en blanco se convierte en un problema. Hace poco comencé a usar Python, y aunque pensé que el problema de los espacios en blanco sería una verdadera molestia, resulta que no es así. Para el registro, estoy usando emacs, aunque estoy seguro de que hay otros editores que hacen un trabajo igualmente bueno.

Si realmente no tiene nada que ver con esto, siempre puede pasar sus scripts a través de un preprocesador, pero eso es una mala idea en muchos niveles. Si vas a aprender un idioma, adopta las características de ese idioma en lugar de tratar de trabajar en torno a ellos. De lo contrario, ¿qué sentido tiene aprender un nuevo idioma?

La confusión de tabulaciones y espacios se puede arreglar configurando su editor para que use espacios en lugar de tabulaciones.

Para hacer que los espacios en blanco sean completamente intuitivos, puede usar un editor de código más fuerte o un IDE (aunque no necesita un IDE completo si todo lo que necesita es una sangría de código automática adecuada).

Se puede encontrar una lista de editores en la wiki de Python, aunque este es un poco demasiado agotador: – http://wiki.python.org/moin/PythonEditors

Ya hay una pregunta aquí que trata de adelgazar un poco:

Tal vez debería agregar una pregunta más específica sobre eso: “¿Qué editor de Python o IDE prefiere en Windows, y por qué?”

Me resulta difícil entender cuando las personas marcan esto como un problema con Python. Lo tomé de inmediato y en realidad descubrí que es una de mis ‘características’ favoritas del idioma 🙂

En otros idiomas, tengo dos trabajos: 1. Arreglar las llaves para que la computadora pueda analizar mi código 2. Arreglar la sangría para poder analizar mi código.

Así que en Python tengo la mitad de lo que preocuparme 😉

(nb la única vez que tengo problemas con la identificación es cuando el código Python está en un blog y en un foro que se mete con los espacios en blanco, pero esto sucede cada vez menos a medida que las aplicaciones se vuelven más inteligentes)

Realmente no. Hay algunas formas de modificar las reglas de espacio en blanco para una línea de código determinada, pero aún necesitará niveles de sangría para determinar el scope.

Puede terminar las declaraciones con ; y luego comenzar una nueva statement en la misma línea. (Lo que la gente suele hacer al jugar al golf.)

Si desea dividir una sola línea en varias líneas, puede terminar una línea con el carácter \ que significa que la línea actual continúa efectivamente desde el primer carácter que no sea un espacio en blanco de la siguiente línea. Este aspecto visual viola las reglas habituales de espacios en blanco, pero es legal.

Mi consejo: no uses tabs si tienes una confusión de tabulación / espacio. Use espacios y elija 2 o 3 espacios como su nivel de sangría.

Un buen editor lo hará para que no tengas que preocuparte por esto. (Python-mode for emacs, por ejemplo, puedes usar la tecla de tabulación y te mantendrá honesto).

Si está buscando una recomendación para un IDE de Python, después de una investigación exhaustiva, estoy muy contento con WingIDE de Wing Software:

http://www.wingware.com/products

Hay una versión de prueba gratuita, por lo que no tienes nada que perder. Es compatible con todos los sistemas operativos principales, y solo cuesta alrededor de $ 60 para la versión completa.

También me gusta mucho SciTE, que es totalmente gratis, gratis, gratis!

http://scintilla.sourceforge.net/SciTEDownload.html

Si no desea usar un editor de IDE / texto con sangría automática, puede usar el script pindent.py que viene en el directorio Tools \ Scripts. Es un preprocesador que puede convertir código como:

 def foobar(a, b): if a == b: a = a+1 elif a < b: b = b-1 if b > a: a = a-1 end if else: print 'oops!' end if end def foobar 

dentro:

 def foobar(a, b): if a == b: a = a+1 elif a < b: b = b-1 if b > a: a = a-1 # end if else: print 'oops!' # end if # end def foobar 

Que es válido python.

Lograr que su sangría funcione correctamente será importante en cualquier idioma que use.

Aunque no afectará la ejecución del progtwig en la mayoría de los otros idiomas, la sangría incorrecta puede ser muy confusa para cualquiera que intente leer su progtwig, por lo que debe invertir tiempo en averiguar cómo configurar su editor para alinear las cosas correctamente. .

Python es bastante liberal en cuanto a cómo te deja sangrar. Puedes elegir entre tabs y espacios (pero realmente debes usar espacios) y puedes elegir cuántos espacios. Lo único que requiere es que usted sea consistente, lo que en última instancia es importante sin importar el idioma que use.

Me sorprende que nadie haya mencionado IDLE como un buen editor de Python predeterminado. Los bonitos colores de syntax, maneja las sangrías, tiene fonts inteligentes, fáciles de ajustar y viene con la descarga predeterminada de Python. Diablos, escribo sobre todo IronPython, pero es tan fácil de editar en IDLE y ejecutar ipy desde un indicador de comandos.

Ah, y cuál es el problema con los espacios en blanco? La mayoría de las funciones fáciles de leer C o C # están bien sangradas. Python solo impone una regla de formato muy simple.

No. ¿Cómo Python analizaría su script si hubiera una manera de deshabilitar esto?

Estaba un poco renuente a aprender Python debido a las tablas. Sin embargo, casi no lo noté cuando usé Vim.

Muchos IDE de Python y editores de texto / fuente generalmente capaces pueden manejar el espacio en blanco por usted.

Sin embargo, es mejor simplemente “dejar ir” y disfrutar de las reglas de espacio en blanco de Python. Con algo de práctica, no se interpondrán en tu camino, y descubrirás que tienen muchos méritos, los más importantes de los cuales son:

  1. Debido al espacio en blanco forzado, el código Python es más fácil de entender. Encontrará que a medida que lee el código escrito por otros, es más fácil de asimilar que codificar, por ejemplo, Perl o PHP.
  2. Los espacios en blanco le ahorran bastantes pulsaciones de teclas de los caracteres de control como {y}, códigos de basura escritos en lenguajes tipo C. Menos {s y} s significa, entre otras cosas, menos RSI y dolor de muñeca. Esto no es un asunto para tomar a la ligera.

En Python, la sangría es un elemento semántico y proporciona una agrupación visual para facilitar la lectura.

Tanto el espacio como la pestaña pueden indicar sangría. Esto es desafortunado, porque:

  • La interpretación de una pestaña varía entre los editores y los IDE y suele ser configurable (ya menudo está configurado).

  • OTOH, algunos editores no son configurables pero aplican sus propias reglas para la sangría.

  • Diferentes secuencias de espacios y tabulaciones pueden ser visualmente indistinguibles.

  • Los cortes y las pastas pueden alterar los espacios en blanco.

Por lo tanto, a menos que sepa que un trozo de código determinado solo será modificado por usted mismo con una sola herramienta y una configuración invariable, debe evitar las tabs para la sangría (configurar su IDE) y asegurarse de que se le avise si se introducen (buscar para las tabs en los espacios en blanco que llevan).

Y aún puede esperar ser mordido de vez en cuando, siempre y cuando se aplique semántica arbitraria a los caracteres de control.

La respuesta real a su pregunta es que si va a utilizar el lenguaje que necesita para aprender su syntax. Así como un error en la sangría de python puede generar un error de comstackción, un error al usar llaves en otros idiomas también puede generar un error de comstackción.

Peor aún, el comstackdor puede malinterpretarlo silenciosamente para hacer algo incorrecto. Esto es particularmente peligroso cuando la sangría no coincide con el significado deseado. Es decir, en muchos otros idiomas:

 If(first condition) if (second condition) do something interesting; else do something different; 

Llevará a sorpresas desagradables.

Python te obliga a escribir código que se parece a lo que hace. Esto es bueno para otros progtwigdores que tienen que leer su código, o para usted cuando intenta leer su propio código después de un mes aproximadamente.

Verifique las opciones de su editor o busque un editor / IDE que le permita convertir los TAB en espacios. Por lo general, configuro las opciones de mi editor para sustituir el carácter TAB con 4 espacios, y nunca tengo ningún problema.

Extraño: nadie mencionó GEdit (Gnome) ni OpenKomodo (Windows, Mac, GNU / Linux …). ¡Ambos son geniales!

OpenKomodo trata especialmente con tabs y espacios muy bien. Y – es gratis. Whee! Cuando necesito una cosita más liviana, solo uso GEdit.

Descargue OpenKomodo aquí – http://www.openkomodo.com/

No, no hay manera de evitarlo, y es por diseño:

 >>> from __future__ import braces File "", line 1 SyntaxError: not a chance 

La mayoría de los progtwigdores de Python simplemente no usan tabs, sino que usan espacios para sangrar en su lugar, de esa manera no hay inconsistencia de editor a editor.

Sí, hay una manera. Odio estas respuestas “de ninguna manera”, no hay manera hasta que descubras una.

Y en ese caso, cualquiera que sea el valor, hay uno.

Leí una vez acerca de un tipo que diseñó una forma de codificar para que una secuencia de comandos simple pudiera volver a sangrar el código correctamente. Sin embargo, no logré encontrar ningún enlace hoy, pero juro que lo leí.

Los trucos principales son usar siempre return al final de una función, usar siempre pass al final de un if o al final de una definición de clase, y usar siempre continue al final de un while . Por supuesto, cualquier otra instrucción sin efecto se ajustaría al propósito.

Luego, un simple script awk puede tomar su código y detectar el final del bloque leyendo las instrucciones de pasar / continuar / devolver, y el comienzo del código con las instrucciones if / def / while / …

Por supuesto, ya que desarrollará su secuencia de comandos de sangría, verá que no tiene que usar continuar después de un retorno dentro de if, porque la devolución activará el mecanismo de sangría hacia atrás. Lo mismo se aplica para otras situaciones. Solo acostúmbrate a ello.

Si usted es diligente, podrá cortar / pegar y agregar / eliminar if y corregir las sangrías automáticamente. Y, por cierto, pegar código de la web requerirá que entiendas un poco para que puedas adaptarlo a esa configuración “no clásica”.

Cualquier editor de progtwigción decente reducirá esta molestia a cero. Veo que Notepad ++ tiene resaltado de syntax, es probable que solo necesite configurar sus preferencias de manera apropiada para la sangría automática y demás.

Solo usa Ruby, es mucho mejor que Python.

http://www.ruby-lang.org