Widziałem pytania podobne do tego, ale nie do końca takie same. Mam wyrażenie:Przypisanie Pythona i test funkcji przy użyciu elif
Nie chcę dwukrotnie obliczać myFunction(bar)
. Gdyby to było po prostu if
mogłem zrobić
temp = myFunction(bar)
if temp != -1
return temp
Jednak robi to z elif
spowoduje niepotrzebnych obliczeń temp
gdybyśmy śledzić intitial if
.
widzę rozwiązanie używając
if ...
else
temp = myFunction(bar)
if temp != -1:
return temp
elif ...
Ale teraz zaczyna być bardziej brzydkie. Czy istnieje lepszy sposób na osiągnięcie tego?
Jeśli nie chcesz, aby zadzwonić 'myFunction (bar)' dwa razy i jeśli tylko może/chcesz wywołać to po sprawdzeniu 'foo', to nie ma innego sposobu niż użycie pośredniej zmiennej do przechowywania wyniku. Nie ma magii, aby ominąć ten podstawowy problem logiczny :-). Myślę, że rozwiązanie nie jest brzydkie, gdy odzwierciedla właściwą logikę. Musisz tylko uważać, gdzie umieścić ostatni "elif". –
Ale 'if' (przynajmniej w przykładzie) i tak zawiera' return', więc możesz * po prostu użyć tymczasowej wartości i rozpocząć nowy blok 'if'. – Volatility