Las versiones anteriores de Python sólo permitiría una sola declaración simple después de for ...:
declaraciones introductorias if ...:
o similares en bloque.
Veo que uno puede tener múltiples declaraciones simples en la misma línea que cualquiera de estos. Sin embargo, hay varias combinaciones que no funcionan. Por ejemplo podemos:
for i in range(3): print "Here's i:"; print i
... pero, por otro lado, no podemos:
for i in range(3): if i % 2: print "That's odd!"
Podemos:
x=10
while x > 0: print x; x-=1
... pero podemos 't:
x=10; while x > 0: print x; x-=1
... y así sucesivamente.
En cualquier caso, todos estos se consideran extremadamente NO-pitónicos. Si escribes código como este, la experiencia de Pythonistas probablemente tomará una visión débil de tus habilidades.
En algunos casos, es marginalmente aceptable combinar declaraciones múltiples en una línea. Por ejemplo:
x=0; y=1
... o incluso:
if some_condition(): break
... por simples break
continue
e incluso return
declaraciones o Traspaso.
En particular, si es necesario utilizar una serie de elif
uno podría usar algo como:
if keystroke == 'q': break
elif keystroke == 'c': action='continue'
elif keystroke == 'd': action='delete'
# ...
else: action='ask again'
... entonces puede que no irritar a sus colegas demasiado. (Sin embargo, las cadenas de elif
como ese grito para ser refactorizado en una mesa de despacho ...un diccionario que podría parecerse más a:
dispatch = {
'q': foo.break,
'c': foo.continue,
'd': foo.delete
}
# ...
while True:
key = SomeGetKey()
dispatch.get(key, foo.try_again)()
No estoy seguro de lo que está buscando ... ¿me puede explicar un poco más? –
¿No tiene Python esas extrañas cosillas lambda hoy en día que le permiten poner mucho más en una línea? No es que alguna vez los use, por supuesto. Prefiero la forma antigua de hacer las cosas :-) – paxdiablo
aún no he investigado sobre lambda. cada vez que veo esa palabra en una pregunta, ¡rápidamente hago clic en un marcador! – Federer