در آموزش قبل با دستور return
آشنا شدیم و دیدیم که اگر این دستور به همراه نام آبجکت مد نظر در بدنۀ فانکشنی به کار رود، پس از فراخوانی مقدار آبجکت مذکور را در خروجی برمیگرداند و سایر فانکشنهایی که فاقد دستور return
هستند هیچ مقداری را برنمیگردانند اما واقعیت امر آن است که تمامی فانکشنها در صورت فراخوانی آبجکتی را ریترن میکنند. در حقیقت، فانکشنهایی که فاقد دستور return
هستند، آبجکتی تحت عنوان None
که متعلق به کلاس NoneType
است را برمیگردانند که هیچ مقداری ندارد و میتوان گفت که تنها نمونه از نوع دادۀ NoneType
است.
پیش از این با کیورد None
آشنا شدیم و دیدیم که اگر بخواهیم متغیری تعریف کنیم که به آبجکتی منتسب نشود، از این کیورد استفاده میکنیم. برای مثال، کد زیر را مد نظر قرار میدهیم:
>>> Spam = None
>>> Spam
>>>
همانطور که میبینید، متغیری به نام Spam
را به آبجکت None
منتسب کردهایم و در سطر بعد گفتهایم مقدار اختصاصیافته به این متغیر در خروجی نمایش داده شود و همانطور که انتظار میرود، شاهد مقداری خالی هستیم. در حقیقت، آبجکت None
نشاندهندۀ نبودِ یک آبجکت و تنها نمونهای از کلاس NoneType
است و در سایر زبانهای برنامهنویسی این آبجکت معادل null
یا nill
و در برخی زبانهای برنامهنویسی نیز معادل undefined
است. همچنین زبان برنامهنویسی پایتون نسبت به بزرگ و کوچک بودن حروف حساس است و از همین روی کیورد None
نیز مانند کیوردهای True
و False
و موارد مشابه آن با حرف بزرگ آغاز میشود.
در ادامه و به منظور درک بهتر مفهوم مقادیر بازگشتی از نوع None
مثال زیر را مد نظر قرار میدهیم:
>>> Spam = print("This Is Spam.")
This Is Spam.
>>> Spam == None
True
در کد فوق، ابتدا فانکشن ()print
را فراخوانی کردهایم و استرینگ «.This Is Spam» را به عنوان آرگومان ورودی به آن دادهایم و در ادامه مقدار ریترنشده از این فانکشن را به متغیری تحت عنوان Spam
منتسب کردیم. سپس با بهکارگیری اپراتور ==
بررسی میکنیم ببینیم که آیا مقدار منتسب به متغیر Spam
با None
برابر است یا خیر که پاسخ True
در خروجی نمایش داده میشود و از همین روی میتوان گفت که فانکشن ()print
و فانکشنهای مشابهی که فاقد دستور return
هستند، صرفاً یکسری دستورات را اجرا کرده و مقداری را برنمیگردانند و تنها یک آبجکت None (خالی) را در خروجی ریترن میکنند.
در واقع، در زمان تعریف فانکشنی که دستور return
در بدنۀ آن وجود ندارد، مفسر پایتون به طور ضمنی و در پشت پرده دستور return None
را به انتهای دستورات بدنۀ فانکشن اضافه میکند و همچنین ذکر دستور return
در بدنۀ فانکشن بدون هیچ متغیر یا مقداری به منزلۀ تعریف فانکشنی با یک مقدار بازگشتی از نوع آبجکت None
میباشد.