TLDR: เทียบเท่าสำนวนของชนิดกลับเป็นคำอธิบายประกอบvoid
-> None
def foo() -> None:
...
นี้ตรงกับที่ฟังก์ชั่นโดยไม่ต้องreturn
หรือเพียงแค่เปลือยประเมินreturn
None
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
ประเภทการส่งคืน ฟังก์ชั่นใด ๆ (หรือสาขาในฟังก์ชั่น) โดยไม่ชัดเจนจะกลับreturn
None
ผมถือว่า OP เข้าใจดีความคิดเห็นนี้ส่วนใหญ่เป็นประโยชน์ต่อผู้อ่านในอนาคต ...