TLDR: เทียบเท่าสำนวนของชนิดกลับเป็นคำอธิบายประกอบvoid-> None
def foo() -> None:
...
นี้ตรงกับที่ฟังก์ชั่นโดยไม่ต้องreturnหรือเพียงแค่เปลือยประเมินreturnNone
def void_func():
pass
print(void())
การละเว้นประเภทการส่งคืนไม่ได้หมายความว่าไม่มีค่าส่งคืน ตามPEP 484 :
Anyสำหรับฟังก์ชั่นการตรวจสอบบันทึกย่อเริ่มต้นสำหรับการขัดแย้งและสำหรับประเภทกลับเป็น
ซึ่งหมายความว่าค่าจะถือว่าพิมพ์แบบไดนามิกและแบบคงที่สนับสนุนการดำเนินงานใด ๆ voidนั่นคือในทางปฏิบัติตรงข้ามกับความหมายของ
คำใบ้ประเภทใน Python ไม่จำเป็นต้องใช้ประเภทจริงอย่างเคร่งครัด ยกตัวอย่างเช่นคำอธิบายประกอบอาจจะใช้สตริงชื่อประเภท: Union[str, int], Union[str, 'int'], 'Union[str, int]'และตัวแปรต่างๆที่เทียบเท่า
ในทำนองเดียวกันคำอธิบายประกอบประเภทNoneจะถือว่ามีความหมายว่า "เป็นของNoneType" สิ่งนี้สามารถใช้ได้ไม่เพียง แต่สำหรับประเภทการส่งคืน แต่คุณจะเห็นบ่อยที่สุดที่นั่น
bar : None
def foo(baz: None) -> None:
return None
นอกจากนี้ยังใช้กับประเภททั่วไป ตัวอย่างเช่นคุณสามารถใช้NoneในGenerator[int, None, None]การบ่งชี้ถึงการกำเนิดไฟฟ้าไม่ได้ใช้หรือค่าตอบแทน
แม้ว่า PEP 484 จะแนะนำว่าNoneหมายความว่าtype(None)คุณไม่ควรใช้รูปแบบหลังอย่างโจ่งแจ้ง ข้อกำหนดประเภทเค้าไม่ได้type(...)รวมถึงรูปแบบของการใด ๆ นี่คือนิพจน์รันไทม์ในทางเทคนิคและการสนับสนุนขึ้นอยู่กับตัวตรวจสอบประเภททั้งหมด mypyโครงการพิจารณาเพื่อลบการสนับสนุนสำหรับtype(None)และนำออกจาก 484 เป็นอย่างดี
หรือบางทีเราควรอัปเดต PEP 484 เพื่อไม่ให้แนะนำว่าtype(None)ถูกต้องเป็นประเภทและNoneเป็นการสะกดที่ถูกต้องเท่านั้นหรือ ควรมีวิธีเดียวและควรมีเพียงวิธีเดียวเท่านั้นที่จะทำได้เป็นต้น
--- JukkaL 18 พ.ค. 2561
voidประเภทการส่งคืน ฟังก์ชั่นใด ๆ (หรือสาขาในฟังก์ชั่น) โดยไม่ชัดเจนจะกลับreturnNoneผมถือว่า OP เข้าใจดีความคิดเห็นนี้ส่วนใหญ่เป็นประโยชน์ต่อผู้อ่านในอนาคต ...