2011-02-17 9 views
16

In primo luogo, non ho potuto trovare una risposta a questo in PEP 8. Ciò non significa che non sia lì dentro. Sentiti libero di indicarmi.In Python, dovrei usare altro dopo un ritorno in un blocco se?

Quale stile preferisci?

Il primo:

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

o il secondo:

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

@closers: capisco il ** soggettivo **, anche se ho cercato di non essere ** e polemico **. Ma fuori tema? Una domanda sullo stile di codifica? – nmichaels

+0

Se ci fosse una categoria "problema di bikehed", voterei per chiudere la tua domanda in quanto tale. In mancanza di questo, mi sono sentito costretto a rispondere invece :) –

+0

Personalmente uso il 2 ° stile se il blocco else è lungo. Mantiene il codice più piatto e più facile da leggere. –

risposta

11

Dipende, se volete tornare pappagalli, quando non si ritorni uova, poi il primo è più chiaro. Ma se stai cercando di rilevare un errore o qualcosa di simile, il secondo è migliore.

8

Il primo!

L'esplicito è meglio che implicito.

7

Il secondo! Meno è di più, e di più è meglio.

-8

non so python, ma lo faccio:

return spam if eggs else parrots 

Modifica: Non ho notato la parte roba Do. In quel caso, creerei un altro metodo o funzione (qualunque cosa sia chiamata in python) per ogni ramo.

+4

È scritto: 'restituisce le uova se spam altri pappagalli' in Python. –

+10

Hai lasciato fuori il '' roba del ''. Inoltre, hai ragione a non conoscere Python. – geoffspear

3

Né!

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

Sintomo di eccessiva esposizione a Pascal durante l'infanzia :-) –

+3

@John Machin: Colpevole come accusato. E troppa teoria formale. È più semplice aggiungere la registrazione e le asserzioni formali prima del 'return'. –

+8

Non mi è mai piaciuto uno stile di programmazione One Entry, One Exit. Se hai finito con il tuo metodo e hai esattamente ciò di cui hai bisogno per tornare ... RESTITUISCI! Sento che la pila si riempie di variabili di risultato sprecate. –

4

Non importa. Se hai davvero bisogno di ragioni per sceglierne uno, usa quello che meglio esprime le ragioni del codice. Il primo se entrambi i casi sono in qualche modo simili o ugualmente importanti. Il secondo se di solito ritorna pappagalli ma le uova sono un caso speciale.

5

Il secondo. Lo stesso vale non solo per return ma anche per le dichiarazioni break e continue. Il else e il conseguente rientro sono irritanti per gli occhi e uno spreco di spazio.

0

Penso che dipenda dalla parte "fare cose". Entrambi sono accettabili.

Problemi correlati