Często piszę konstrukcje if / elif / else w Pythonie i chcę dołączyć opcje, które mogą wystąpić, ale dla których odpowiednia akcja nie polega na nic. Zdaję sobie sprawę, że mógłbym po prostu wykluczyć te instrukcje if, ale ze względu na czytelność uważam, że pomocne jest uwzględnienie ich wszystkich, więc jeśli przeglądasz kod, możesz zobaczyć, co się dzieje w wyniku każdej opcji. Jak zakodować brak operacji? Obecnie robię to tak:
no_op = 0
if x == 0:
y = 2 * a
elif x == 1:
z = 3 * b
elif x == 3:
no_op
(Kod jest w rzeczywistości nieco dłuższy i bardziej skomplikowany. To jest tylko dla zilustrowania struktury).
Nie lubię używać zmiennej jako no-op, ale to najładniejszy sposób, jaki mogłem wymyślić. Czy jest lepszy sposób?
...
) również zasługuje na wzmiankę: stackoverflow.com/a/6189281/38281Odpowiedzi:
Użyj przepustki, aby nie grać:
A oto kolejny przykład:
Lub:
źródło
doSQL = lambda *x:x
.else
?pass
nie jest wartością. Nie rozumiem też, jak mogłoby się to przydać.A co powiesz
pass
?źródło
Jeśli potrzebujesz funkcji, która zachowuje się jak nop, spróbuj
Czasami robię takie rzeczy, gdy ustawiam zależności jako opcjonalne:
źródło
nop
jest kontekst, który wymaga konkretnie wyrażenia (w przeciwieństwie do arbitralnej instrukcji; qv docs.python.org/3/reference/simple_stmts.html i docs.python.org/3/reference/compound_stmts. html ) - jak np. jako podwyrażenie do istniejącego idiomu kodu, takiego jak rozumienie, lub alambda
, lub (nie daj Boże ) ciąg do przekazaniaeval(…)
(który qv docs.python.org/3/library/functions.html# eval, jeśli musisz).lambda
do przypisywania funkcji do zmiennej w celu ponownego użycia jest złym stylem kodowania. Jestdef
za to.Innym sposobem jest wielokropek:
źródło
None
,136
lub"NothingHere"
. Ale prawidłowe wypełnienie w Pythonie topass
.