Starsze wersje Pythona pozwoliłby tylko jeden prosty oświadczenie po for ...:
if ...:
lub podobny blokowych oświadczenia wstępne.
Widzę, że można mieć wiele prostych instrukcji w tym samym wierszu, co dowolny z nich. Istnieją jednak różne kombinacje, które nie działają. Na przykład możemy:
for i in range(3): print "Here's i:"; print i
... ale z drugiej strony, nie możemy:
for i in range(3): if i % 2: print "That's odd!"
Możemy:
x=10
while x > 0: print x; x-=1
... ale możemy "t:
x=10; while x > 0: print x; x-=1
... i tak dalej.
W każdym razie wszystkie z nich są uważane za skrajnie nietonogeniczne. Jeśli napiszesz kod w ten sposób, wówczas Pythonistas prawdopodobnie podejmie słabe spojrzenie na twoje umiejętności.
Jest minimalnie dopuszczalne łączenie wielu instrukcji na linii w niektórych przypadkach. Na przykład:
x=0; y=1
... albo nawet:
if some_condition(): break
... dla prostych break
continue
a nawet return
oświadczenia lub assigments.
W szczególności, jeśli trzeba użyć jednej serii elif
może użyć czegoś takiego:
if keystroke == 'q': break
elif keystroke == 'c': action='continue'
elif keystroke == 'd': action='delete'
# ...
else: action='ask again'
... to nie może drażnić kolegów zbyt dużo. (Jednak łańcuchy takie jak elif
krzyczą, aby zostać refaktoryzowane w stół ekspedycyjny ...słownik, który może wyglądać bardziej podobnie:
dispatch = {
'q': foo.break,
'c': foo.continue,
'd': foo.delete
}
# ...
while True:
key = SomeGetKey()
dispatch.get(key, foo.try_again)()
Nie jesteś pewien, czego szukasz ... możesz wyjaśnić nieco więcej? –
Czy Python nie ma teraz tych dziwacznych rzeczy o lambdzie, które pozwalają ci umieścić o wiele więcej na linii? Oczywiście, że nigdy ich nie użyję. Wolę stary sposób robienia rzeczy :-) – paxdiablo
Nie oglądałem jeszcze lambdy. za każdym razem, gdy widzę to słowo w pytaniu, szybko klikam zakładkę! – Federer