2011-02-17 7 views
16

Po pierwsze, nie mogłem znaleźć odpowiedzi na to w PEP 8. To nie znaczy, że go tam nie ma. Zapraszam do wskazania mi tego.W Pythonie, czy powinienem użyć else po powrocie w bloku if?

Jaki styl preferujesz?

Pierwszy:

if spam: 
    # Do stuff. 
    return eggs 
else: 
    # Maybe do other stuff. 
    return parrots 

lub drugi:

if spam: 
    # Do stuff. 
    return eggs 
# Maybe do other stuff. 
return parrots 
+12

@closers: Rozumiem ** subiektywny **, chociaż starałem się nie być ** i argumentatywny **. Ale poza tematem? Pytanie o styl kodowania? – nmichaels

+0

Gdyby istniała kategoria "problemu rowerów", głosowałbym, aby zamknąć twoje pytanie jako takie. Nie mając tego, czułem się zmuszony do odpowiedzi na to pytanie :) –

+0

Osobiście używam drugiego stylu, jeśli blok else jest długi. Utrzymuje kod bardziej płaski i łatwiejszy do odczytania. –

Odpowiedz

11

To zależy od tego, czy zwrócisz papugi, gdy nie zwrócisz jaj, to pierwsze jest bardziej przejrzyste. Ale jeśli próbujesz złapać błąd lub coś podobnego, drugi jest lepszy.

8

Pierwszy z nich!

Jawność jest lepsza niż domniemana.

7

Drugi! Mniej znaczy więcej, a więcej jest lepiej.

-8

Nie wiem, python, ale mam:

return spam if eggs else parrots 

Edycja: Nie zauważyłem część rzeczy robić. W takim przypadku utworzyłbym inną metodę lub funkcję (bez względu na to, jak jest wywoływana w pythonie) dla każdej gałęzi.

+4

Jest napisane: 'zwracaj jaja, jeśli spam to papugi inne 'w Pythonie. –

+10

Pominąłeś '# stuff stuff's. Poza tym masz rację, jeśli nie znasz Pythona. – geoffspear

3

Ani!

if spam: 
    # Do Stuff 
    result= eggs 
else: 
    # Maybe do other stuff 
    result= parrots 
return result 
+13

Objaw nadmiernej ekspozycji na Pascal w dzieciństwie :-) –

+3

@John Machin: Winny jak opłata. I zbyt wiele formalnej teorii. Łatwiej jest dodać rejestrowanie i potwierdzenia formalne przed 'return'. –

+8

Nigdy nie podobał mi się styl programowania One Entry, One Exit. Jeśli skończyłeś z metodą i masz dokładnie to, czego potrzebujesz, aby powrócić ... POWRÓT! Czuję, że stos pulsuje zmarnowanymi zmiennymi wyniku. –

4

To naprawdę nie ma znaczenia. Jeśli naprawdę potrzebujesz powodów do wyboru, użyj tego, który najlepiej oddaje przyczyny tego kodu. Pierwszy, jeśli oba przypadki są w jakiś sposób podobne lub równie ważne. Drugi, jeśli zwykle zwracasz papugi, ale jaja są szczególnym przypadkiem.

5

Drugi. To samo odnosi się nie tylko do return, ale także do instrukcji break i continue. Model else i wynikające z tego wcięcia podrażniają oczy i marnują przestrzeń.

0

Myślę, że to zależy od części "zrób to". Oba są dopuszczalne.