TLDR: Bir void
dönüş türü ek açıklamasının deyimsel karşılığı şudur -> None
.
def foo() -> None:
...
Bu return
, çıplak veya çıplak bir işlevin return
değ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 None
in kullanabilirsiniz Generator[int, None, None]
.
PEP 484 düşündürmektedir rağmen None
araç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. mypy
Proje 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 None
olduğ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
void
dönüş türüne sahip işlevleri yoktur . Açıkça belirtilmemiş herhangi bir işlev (veya bir işlevdeki dal)return
geri dönecektirNone
. OP'nin bu yorumun çoğunlukla gelecekteki okuyucuların yararına olduğunu anladığını varsayıyorum ...