Cosas que me han llamado la atención de la sintaxis de Python

Hay muchas cosas que me han llamado la atención de la sintaxis de python, quizás por haber estado centrado mucho tiempo en lenguajes como C/C++ o java, que son muy similares en cuanto a sintaxis, y haber hecho alguna incursión en php, que también tiene muchas similitudes con C. El basic y el pascal me quedan ya lejanos….

De la sintaxis de python me ha llamado la atención la forma de asignar variables. Si hacemos esto

a,b,c=1,2,3

asigna los valores uno a uno, es decir, la a valdrá 1, la b 2 y la c 3. Es más, si d es una especie de Hastable, -en python creo que se llama defaultdict-, podemos hacer un bucle así

for clave,valor in d:

y se iran asignando automáticamente clave y valor en cada una de las iteraciones. Realmente cómodo si lo comparamos con java, que hay que pedir las keys() y luego iterar y con cada key pedir el get(key) correspondiente.

En cuanto a las clases python, también es curioso el tema de los atributos. Estos, al igual que el resto de las variables, NO se declaran. En el mismo constructor de la clase emprezamos a crearlas sobre la marcha asignándoles valores.

class UnaClase:
   def __init__(self):
      self.unAtributo="hola";
      …

Todos los métodos, el constructor y demás métodos, reciben un parámetro self, equivalente al this, pero lo reciben explicitamente. Además, incluso desde fuera de la clase, cuando la estamos usando, podemos añadirle más atributos sobre la marcha. En el caso de UnaClase, podemos hacer perfectamente esto

a = UnaClase()
print a.unAtributo   # escribe "hola"
a.otroAtributo="adios"
print a.otroAtributo  # escribe "adios"

Y también es realmente curioso que no hay nada similar a abrir y cerrar llaves, ni begin-end, ni cosas de esas. El cuándo empieza o termina un bucle, una definición o cualquier otra cosa …. ¡¡ se hace con el sangrado !!. Bueno, no es totalmente cierto, hay que poner un dos puntos al final de la línea en la que empieza el bucle o definición y las siguientes líneas ponerlas sangradas hasta que queramos terminar el bucle o definición.

Un lenguaje realmente curioso.

Esta entrada fue publicada en python. Guarda el enlace permanente.

6 respuestas a Cosas que me han llamado la atención de la sintaxis de Python

  1. Blaxter dijo:

    Hombre la sintaxis de python es bastante normal, salvo la indentación. Para sintaxis curiosas o potentes, perl o ruby le dan mil vueltas, sobretodo éste último que a pesar de tener muchas más cosas que python, sigue siendo entendible (algo que difícilmente se puede decir en perl :P).

    Pero bueno si lo comparas solo con Java/C++ obviamente hay una gran diferencia (a mejor claro :P)

    ps: un «hashtable» en python es un tipo diccionario. Que es como se llaman a este tipo de datos, que luego esté implementado internamente con una tabla hash (como suele ser lo normal, entre otras cosas) es otro tema que no tiene nada que ver. Java nos atonta

  2. hefesto84 dijo:

    No he conseguido encontrar tu correo para felicitarte personalmente, así que lo hago aquí.

    Felicidades por el estupendísimo trabajo que haces con el tema de programación. Si te soy sincero, me has salvado el proyecto final de carrera, al leer un artículo tuyo acerca de sockets y los problemas que pueden presentar.

    Sin más, muchas gracias, y sigue así 😉

    P.S: Nombraré esta web en la bibliografía

  3. Willie dijo:

    un «hashtable» en java es tambien un tipo diccionario.

  4. Chuidiang dijo:

    hefesto84. Gracias, me alegro que todo esto le sirva a alguien, aparte de a mi como entretenimiento.

    En cuanto al «hashtable», sois muy detallistas 😀 Para mi cualquier cosa con claves y valores es un «hastable» entre comillas. Supongo que sí, es deformación de trabajar sólo en java y ver la clase java.util.Hashtable….

    Sed buenos.

  5. Blaxter dijo:

    Yo a lo que me refería es que un HashTable es una implementación del tipo abstracto de datos comúnmente denominado diccionario.

    Son conceptos distintos que indican la misma cosa en la práctica. Vale sé que es muy tocapelotas mi comentario :P, pero mezclarlos es caer en la decadencia, sino a los múltiples texto que han ido apareciendo sobre Java y la decadencia de la ingeniería informática me remito. He aquí un ejemplo claro del porqué.

  6. Chuidiang dijo:

    Me has convencido. De ahora en adelante los llamaré a todos «chismes». 😛

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.