Sintaxis práctica.
Chema Cortés
ch3m4 en ch3m4.org
Dom Jun 6 04:09:05 CEST 2004
Mensaje citado por Ernesto Revilla <erny en sicem.biz>:
>Durante un tiempo se hablaba de
> introducir un nuevo operador ternario en Python, que funciona como en
> C: c = a>b ? 25 : 50 pero al final creo que no se pusieron de
> acuerdo en la sintaxis.
Hubo una votación, pero en python no hay "democracia" y todas las decisiones las
toma siempre el BOFL (Benevolent Dictator For Life).
La sintáxis preferida por el BOFL (==Guido van Rossum) es:
(if <expression>: <value1> else: <value2>)
y puede que algún día se incluya de tapadillo en alguna nueva versión de python.
> if a> 10 and a< 20: .... -> if 10 < a < 20: ....
>
> muy matemático, pero pocos programadores de Python lo saben.
Sí que se conoce ésta expresión, pero tiene mala fama. Por ejemplo, la siguiente
expresión es válida en C y python:
-1 < 0 < 1
En python es true, en C es false. Existe cierto temos psicológico entre los
programadores de C (y lenguajes con sintáxis similares) a no utilizar este tipo
de expresiones.
> a += 1 # incremento por uno a++ no existe, eso es C.
Curiosamente, en python la expresión ++a es válida, pero sin ningún significado.
> una de mis expresiones favoritas son las comprehension list:
>
> [a*a for a in range(100) if a % 2 == 0]
La compresión de listas es ESENCIAL en python, es casi un signo distintivo
frente a otros lenguajes de programación.
> for clave in diccionario: ....
>
> o:
>
> for clave, valor in diccionario.items()
Yo añadiría aquí la enumeración (enumerate), que simplifica los bucles en los
que hacía falta llevar la cuenta en una variable de control para enumerar los
elementos de una lista:
for i, value in enumerate(Lista):
print "Elemento número %d -> %s" %(i,value)
Por nombrar algunas cosas más:
- Paso en número variable de argumentos posicionales y por nombre
- Operador de formato %
- El .join()
- Rebanados de secuencias con intercalado
- "internalizar" cadenas de caracteres en la tabla de símbolos
- Métodos estáticos, de clase, etc
- Metaclases
- Generadores e Iteradores
Más información sobre la lista de distribución Python-es