TLDR: Bir voiddönüş türü ek açıklamasının deyimsel karşılığı şudur -> None.
def foo() -> None:
...
Bu return, çıplak veya çıplak bir işlevin returndeğerlendirdiği ile eşleşir None.
def void_func():
pass
print(void())
Dönüş türünün atlanması, dönüş değerinin olmadığı anlamına gelmez. Başı olarak PEP 484 :
Kontrol edilen bir işlev için, bağımsız değişkenler ve dönüş türü için varsayılan açıklama Any.
Bu, değerin dinamik olarak yazılmış olduğu ve herhangi bir işlemi statik olarak desteklediği anlamına gelir . Bu neredeyse tam tersi anlamıdır void.
Python'da tip ipucu, kesinlikle gerçek türleri gerektirmez. Örneğin, ek açıklamalar tipi isimlerinin dizeleri kullanabilir Union[str, int], Union[str, 'int'], 'Union[str, int]'ve çeşitli varyantlar eşdeğerdir.
Benzer şekilde, tür ek açıklamasının "eşittir " anlamına geldiğiNone kabul edilirNoneType . Bu, yalnızca dönüş türleri için kullanılamaz, ancak en sık orada göreceksiniz:
bar : None
def foo(baz: None) -> None:
return None
Bu aynı zamanda genel türler için de geçerlidir. Örneğin, bir oluşturucunun değerleri almadığını veya döndürmediğini belirtmek için Nonein kullanabilirsiniz Generator[int, None, None].
PEP 484 düşündürmektedir rağmen Nonearaçlar type(None), sen olmamalı açıkça ikincisi formu kullanın. Türü ipucu özellikleri yok olup herhangi bir şekilde bulunmaktadır type(...). Bu teknik olarak bir çalışma zamanı ifadesidir ve desteği tamamen tür denetleyicisine bağlıdır. mypyProje edilir desteğini kaldırmak için dikkate için type(None)ve ayrıca 484 çıkarın.
Veya belki de PEP 484'ü, type(None)bunun bir tür olarak geçerli Noneolduğunu ve tek doğru yazım olduğunu önermemek için güncellemeliyiz ? Bunu yapmanın bir - ve tercihen sadece bir - bariz bir yolu olmalıdır vs.
--- JukkaL, 18 Mayıs 2018
voiddönüş türüne sahip işlevleri yoktur . Açıkça belirtilmemiş herhangi bir işlev (veya bir işlevdeki dal)returngeri dönecektirNone. OP'nin bu yorumun çoğunlukla gelecekteki okuyucuların yararına olduğunu anladığını varsayıyorum ...