2016-04-22 21 views
14

In Python 3.x, è comune utilizzare tipo di ritorno di annotazione di una funzione, come ad esempio:Python vuoto tipo di ritorno di annotazione

def foo() -> str: 
    return "bar" 

Qual è l'annotazione corretta per il tipo di "vuoto"?

Sto pensando di 3 opzioni:

  1. def foo() -> None:
      non
    • logica IMO, perché None non è un tipo,
  2. def foo() -> type(None):
    • utilizzando il meglio della sintassi So per aver ottenuto NoneType,
  3. def foo():
    • omettere esplicite informazioni sul tipo di ritorno.

Opzione 2. sembra il più logico per me, ma ho già visto alcuni casi di 1.

+1

FWIW, Python non ha funzioni con il tipo di ritorno 'void'. Qualsiasi funzione (o ramo in una funzione) senza un esplicito 'return' restituirà' None'. Presumo che il PO capisca che questo commento è principalmente a beneficio dei futuri lettori ... –

risposta

18

Questo è retta dalla PEP 484 -- Type Hints documentazione:

Quando utilizzato in un suggerimento tipo, l'espressione None è considerata equivalente a type(None).

E, come è possibile vedere la maggior parte degli esempi, utilizzare None come tipo di ritorno.

+3

Per chiarire, scegliere l'opzione 1 sopra. –

+2

E il tipo NoReturn https://www.python.org/dev/peps/pep-0484/#the-noreturn-type? – asmaier

+1

@asmaier in base a [questa domanda] (https://stackoverflow.com/questions/38570144/type-hint-that-a-function-never-returns) che cita [PEP 484 - Suggerimenti tipo] (https: // www.python.org/dev/peps/pep-0484/) Si usa "NoReturn' type" per annotare funzioni che non ritornano mai normalmente, ad esempio una funzione che innalza incondizionatamente un'eccezione ... " –

Problemi correlati