TLDR: l'equivalente idiomatico di voidun'annotazione di tipo restituito è -> None.
def foo() -> None:
...
Questo corrisponde a quello di una funzione senza returno solo un nudo returnrestituisce None.
def void_func(): # unannotated void function
pass
print(void()) # None
L'omissione del tipo restituito non significa che non sia presente alcun valore restituito. Secondo PEP 484 :
Per una funzione selezionata, l'annotazione predefinita per gli argomenti e per il tipo restituito è Any.
Ciò significa che il valore è considerato tipizzato dinamicamente e supporta staticamente qualsiasi operazione . Questo è praticamente il significato opposto di void.
I suggerimenti sui tipi in Python non richiedono strettamente i tipi effettivi. Ad esempio, le annotazioni possono utilizzare stringhe di nomi di tipo: Union[str, int], Union[str, 'int'], 'Union[str, int]'e diverse varianti sono equivalenti.
Allo stesso modo, l'annotazione di tipo Noneè considerata significare "è di NoneType". Questo può essere utilizzato non solo per i tipi di reso, anche se lo vedrai più spesso lì:
bar : None
def foo(baz: None) -> None:
return None
Questo vale anche per i tipi generici. Ad esempio, è possibile utilizzare Nonein Generator[int, None, None]per indicare che un generatore non accetta o restituisce valori.
Anche se PEP 484 suggerisce questo Nonemezzo type(None), non dovresti usare la seconda forma esplicitamente. La specifica del suggerimento sul tipo non include alcuna forma di type(...). Questa è tecnicamente un'espressione di runtime e il suo supporto dipende interamente dal controllo del tipo. Il mypyprogetto sta considerando di rimuovere il supporto per type(None)e rimuoverlo anche da 484.
O forse dovremmo aggiornare PEP 484 per non suggerire che type(None)è valido come tipo, ed Noneè l'unica ortografia corretta? Ci dovrebbe essere uno - e preferibilmente solo uno - modo ovvio per farlo ecc.
--- JukkaL, 18 maggio 2018
voidtipo restituito. Qualsiasi funzione (o ramo in una funzione) senza un esplicitoreturntorneràNone. Presumo che l'OP lo capisca, questo commento è principalmente a beneficio dei futuri lettori ...