TLDR:void戻り値型注釈の慣用的な同等物は-> Noneです。
def foo() -> None:
    ...
これは、関数の評価結果がにreturn等しいか、またはまったくない場合に一致returnしNoneます。
def void_func():  # unannotated void function
    pass
print(void())  # None
戻り値の型を省略しても、戻り値がないとは限りません。あたりとしてPEP 484:
チェック関数の場合、引数と戻り値の型のデフォルトの注釈はAnyです。
これは、値が動的に型付けされていると見なされ、静的に任意の操作をサポートすることを意味します。これは実際にはの反対の意味ですvoid。
Pythonの型ヒントは、実際の型を厳密に必要としません。たとえば、注釈はタイプ名の文字列を使用することができUnion[str, int]、Union[str, 'int']、'Union[str, int]'および様々な変異体が同等です。
同様に、型注釈Noneは「is of 」を意味すると見なされNoneTypeます。これは、戻り値の型だけでなく、そこに最も頻繁に表示されますが、使用できます。
bar : None
def foo(baz: None) -> None:
    return None
これはジェネリック型にも適用されます。たとえば、Nonein Generator[int, None, None]を使用して、ジェネレータが値を取得または返さないことを示すことができます。
PEP 484はをNone意味するtype(None)と示唆していますが、後者の形式を明示的に使用しないでください。タイプヒント指定には、の形式は含まれませんtype(...)。これは技術的にはランタイム式であり、そのサポートは完全に型チェッカー次第です。mypyプロジェクトがされてサポート削除する検討のためにtype(None)、よくとして484から取り外します。
あるいは、それtype(None)がタイプとして有効であることを示唆しないように、PEP 484を更新する必要があります。Noneがあり、唯一の正しいスペルである必要がありますか?それを行うための明白な方法は1つ(できれば1つだけ)あるはずです。
--- JukkaL、2018年5月18日
     
              
void戻り値の型を持つ関数はありません。明示的でない関数(または関数の分岐)returnはを返しNoneます。私はOPがそれを理解していると思います、このコメントは主に将来の読者の利益のためです...