TLDR: एक void
रिटर्न प्रकार एनोटेशन के मुहावरेदार बराबर है -> None
।
def foo() -> None:
...
यह मेल खाता है कि बिना return
या सिर्फ नंगे एक फ़ंक्शन का return
मूल्यांकन करता है None
।
def void_func(): # unannotated void function
pass
print(void()) # None
रिटर्न प्रकार को स्वीकार करने का मतलब यह नहीं है कि रिटर्न वैल्यू नहीं है। पीईपी 484 के अनुसार :
चेक किए गए फ़ंक्शन के लिए, तर्कों के लिए डिफ़ॉल्ट एनोटेशन और वापसी प्रकार के लिए है Any
।
इसका मतलब है कि मूल्य को गतिशील रूप से टाइप किया गया है और सांख्यिकीय रूप से किसी भी ऑपरेशन का समर्थन करता है । व्यावहारिक रूप से इसका विपरीत अर्थ है void
।
पाइथन में टाइप करने के लिए वास्तविक प्रकारों की कड़ाई से आवश्यकता नहीं होती है। उदाहरण के लिए, एनोटेशन प्रकार के नाम के तार का उपयोग कर सकते हैं: 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]
एक जनरेटर लेने के लिए या मान वापस नहीं करता है इंगित करने के लिए।
भले ही पीईपी 484 का None
अर्थ है कि type(None)
आपको बाद के फॉर्म का स्पष्ट रूप से उपयोग नहीं करना चाहिए । प्रकार संकेत विनिर्देश के किसी भी रूप में शामिल नहीं है type(...)
। यह तकनीकी रूप से एक रनटाइम अभिव्यक्ति है, और इसका समर्थन पूरी तरह से टाइप चेकर तक है। mypy
परियोजना है समर्थन को दूर करने पर विचार के लिए type(None)
और साथ ही 484 से निकाल देंगे।
या हो सकता है कि हमें PEP 484 को अपडेट करना चाहिए ताकि यह सुझाव न दिया जा सके कि type(None)
यह एक प्रकार के रूप में मान्य है, और None
केवल सही वर्तनी है? एक होना चाहिए - और अधिमानतः केवल एक - स्पष्ट तरीका यह करने के लिए आदि।
--- जुक्काएल, 18 मई 2018
void
रिटर्न प्रकार के कार्य नहीं हैं । कोई भी फ़ंक्शन (या किसी फ़ंक्शन में शाखा) बिना किसी स्पष्ट केreturn
वापस आ जाएगीNone
। मुझे लगता है कि ओपी समझता है कि, यह टिप्पणी ज्यादातर भविष्य के पाठकों के लाभ के लिए है ...