Eso iba a comentar ayer y se ve que se me olvidó
Con
is se verifica que ambos identificadores se refieran al mismo objeto, no se tienen en cuenta los valores. Con
== se comparan los valores.
Una pequeña tablita comparativa (en C, tomando en cuenta las cadenas, char*):
Código:
Python Java C
a is b a == b a == b
a == b a.equals(b) strcmp(a, b) == 0
Además de la guía de estilo, yo mencionaría cosas como el "es mejor pedir perdón que pedir permiso", que se refiere a escribir:
Código Python:
Ver originaltry:
a = milista[5]
except IndexError:
print 'no hay un índice 5'
en vez de algo como
Código Python:
Ver originalif len(milista) >= 6:
a = milista[5]
else:
print 'no hay índice 5'
También vale mencionar el uso de comprensión de listas o generadores cuando sea posible (¡y legible!).
Una técnica en particular que me gusta bastante es usar diccionarios para suplantar a la construcción switch, que no existe en Python:
Código Python:
Ver originaloperador = 'suma'
opciones = {
'suma': 'elegiste suma',
'multiplicacion': 'elegiste multiplicacion'
'division': 'elegiste division',
'resta': 'elegiste resta'
}
print opciones.get(operador, 'mala elección')
El equivalente usando 'switch' sería (en PHP):
Código PHP:
Ver original$operador = 'suma';
switch($operador) {
case 'suma': echo 'elegiste suma'; break;
case 'multiplicacion': echo 'elegiste multiplicacion'; break;
case 'division': echo 'elegiste division'; break;
case 'resta': echo 'elegiste resta'; break;
default: echo 'mala elección';
}