آشنایی با دستور pass در زبان برنامه‌نویسی پایتون


در آموزش‌های گذشته علاوه بر آشنایی با مفاهیم حلقه‌ و دستورات شرطی، با نحوۀ پیاده‌سازی آن‌ها آشنا شده سپس چگونگی پیاده‌سازی فانکشن‌ها را آموخته و برخی مزایای استفاده از فانکشن در توسعۀ نرم‌افزار را برشمردیم مضاف بر اینکه نحوۀ پیاده‌سازی و فراخوانی یک فانکشن را بررسی نمودیم. حال در این آموزش قصد داریم تا ببینیم که برای مثال چگونه می‌توان یک دستور شرطی پیاده‌سازی کرد که به ازای برخی شرایط خاص هیچ کاری انجام نشود یا یک فانکشن بدون تعریف تَسکی خاص در داخلش پیاده‌سازی کرد به طوری که سورس‌کد مربوطه نیز بدون هیچ مشکلی اجرا گردد تا در آینده هر یک از فانکشن‌هایی که نیاز به تکمیل شدن دارند را توسعه داد.

انجام چنین مواردی در زبان برنامه‌نویسی پایتون با به‌کارگیری دستور pass امکان‌پذیر است. در واقع، دستور pass امکانی را برای دولوپرهای این زبان فراهم می‌کند تا در صورت لزوم بخشی از کد مانند دستورات داخلی یک فانکشن، ساختار حلقه‌های تکرار و غیره را در آینده پیاده‌سازی نمایند به طوری که سورس‌کد مد نظر از نظر سینتکسی مشکلی نداشته و به راحتی اجرا شود اما با رسیدن به دستور pass تَسک خاصی انجام نشود.

همچنین با استفاده از دستور pass می‌توان یک کلاس بدون پیاده‌سازی متدی در آن یا فانکشنی بدون تعریف تَسک‌های مورد نظر داخل آن پیاده‌سازی کرد به علاوه اینکه با به‌کارگیری دستور pass می‌توان حلقۀ for را به نحوی تعریف نمود که مثلاً به ازای برخی اِلِمان‌های خاص یکسری دستور اجرا شده و بر روی سایر اِلِمان‌ها پردازش خاصی اِعمال نگردد. بنابراین دستور pass در توسعۀ نرم‌افزار با زبان پایتون به منظور مشخص کردن بخشی از سورس‌کد مورد استفاده قرار می‌گیرد که نیاز به تکمیل شدن داشته اما از سوی دیگر اپلیکیشن مد نظر می‌باید بدون هیچ‌گونه مشکلی اجرا گردد.

حال پس از آشنایی با ویژگی‌های دستور pass در زبان برنامه‌نویسی پایتون، در ادامه قصد داریم تا نحوۀ به‌کارگیری آن را در قالب یکسری مثال کاربردی مورد بررسی قرار دهیم.

به‌کارگیری دستور pass در حلقه‌های تکرار

همان‌طور که در آموزش‌های گذشته اشاره کردیم، در زبان برنامه‌نویسی پایتون با به‌کارگیری حلقۀ for می‌توان برای مثال اعضای آبجکتی از نوع دادۀ لیست را پیمایش کرده و به ازای هر یک از اِلِمان‌های تشکیل‌دهندۀ آن یکسری دستور خاص را اجرا کرد. حال شرایطی را در نظر بگیرید که پیاده‌سازی دستورات مد نظر به منظور اِعمال روی هر یک از اِلِمان‌های لیست مذکور نیاز به زمان داریم یا برای مثال قصد داریم تا در آینده تَسک مربوط به حلقه‌های for مورد نظر را تکمیل نماییم و فعلاً کاری به آن نداریم که در چنین شرایطی می‌توانیم از دستور pass به صورت زیر استفاده کنیم:

>>> listA = [18, 21, 19, 29, 46]
>>>> for elements in listA:
         pass

در مثال فوق، آبجکتی از جنس لیست تحت عنوان listA ایجاد کرده و یکسری مقدار عددی به آن اختصاص داده‌ایم. در ادامه، یک حلقۀ for تعریف کرده و با استفاده از کیورد in گفته‌ایم اِلِمان‌های listA به ترتیب به متغیری به نام elements منتسب شده سپس به ازای هر یک از اِلِمان‌های لیست مذکور حلقۀ for اجرا شود. بنابراین مفسر پایتون وارد حلقه شده و دستورات داخلی آن را اجرا می‌کند که در حال حاضر صرفاً دستور pass مبنی بر عدم انجام کاری خاص داخل حلقه است و از همین روی دستور مذکور اجرا شده و مفسر از حلقه خارج می‌گردد.

به‌کارگیری دستور pass در دستورات شرطی

همچنین دستور pass را می‌توانیم در دستورات شرطی مورد استفاده قرار دهیم که بدین ترتیب سورس‌کدی پیاده‌سازی می‌کنیم که در صورت برقراری یکسری شرایط خاص دستور مد نظر را اجرا کرده و در غیر این صورت کار خاصی انجام ندهد که برای مثال داریم:

>>> for elements in listA:
        if elements % 2 == 0:
            pass
        else:
            print(elements)
21
19
29

در کد فوق، همچون مثال پیشین، گفته‌ایم به ازای هر یک از اِلِمان‌های آبجکت listA دستورات داخلی حلقۀ for اجرا شوند که در دستور سطر دوم گفته‌ایم چنانچه باقی‌ماندۀ تقسیمِ هر یک از اِلِمان‌های لیست مذکور بر عدد 2 برابر با 0 گردد، هیچ دستوری اجرا نشده و در غیر این صورت اِلِمان مورد نظر در خروجی چاپ شود و بدین ترتیب با اجرای کد فوق، به ازای اِلِمان‌های زوجِ لیست هیچ دستوری اجرا نشده و اِلِمان‌های فرد نیز در خروجی چاپ می‌شوند.

به‌کارگیری دستور pass در تعریف فانکشن

در توسعۀ نرم‌افزارهای بزرگ برخی مواقع نیاز به پیاده‌سازی فانکشنی داریم که تَسک‌های مد نظر برای این فانکشن به طور کامل طراحی و پیاده‌سازی نشده‌اند که بدین ترتیب می‌توانیم فانکشن مربوطه را در بخش مورد نیاز از سورس‌کد تعریف کرده و دستور pass را به عنوان تنها دستور داخلی آن درج نماییم. در چنین شرایطی، بخشی از  سورس‌کد مشخص می‌گردد که فانکشن مورد نظر در آن نیاز به توسعه داشته و می‌باید در آینده تکمیل شود. به عنوان یک مثال از پیاده‌سازی چنین فانکشنی داریم:

>>> def sampleFunction(a, b):
        pass

در کد فوق، فانکشنی فرضی تحت عنوان ()sampleFunction با دو پارامتر ورودی تحت عناوین a و b تعریف کرده‌ایم که در صورت فراخوانی این فانکشن هیچ تَسکی انجام نمی‌شود. در واقع، با استفاده از دستور pass می‌توانیم فانکشن مورد نیاز را تعریف کرده و به خاطر داشته باشیم که در آینده منطق مربوط به آن را پیاده‌سازی کنیم و در چنین شرایطی سورس‌کد مد نظر از نظر سینتکسی با مشکلی مواجه نشده و به درستی اجرا می‌شود.

به‌کارگیری دستور pass در پیاده‌سازی کلاس

به علاوه، مشابه آنچه در مثال فوق بیان کردیم، با استفاده از دستور pass می‌توانیم کلاسی را پیاده‌سازی نماییم که در آینده متدهای مورد نظر را داخل آن تعریف کرده و کلاس مذکور را تکمیل نماییم. برای مثال داریم:

>>> class Sample:
        pass

در آموزش آشنایی با مفهوم Class در زبان برنامه‌نویسی پایتون نحوۀ تعریف کلاس و متدهای متعلق به آن را تشریح نمودیم. جهت یادآوری می‌توان گفت که در این مثال با استفاده از کیورد class کلاسی تحت عنوان Sample تعریف کرده‌ایم که در ادامه یک علامت : درج نموده‌ایم سپس با رعایت تورفتگی وارد بدنۀ کلاس شده و متدهای مورد نظر را داخل آن پیاده‌سازی می‌کنیم که در این مثال کلاس Sample بدون پیاده‌سازی متدی داخل آن تعریف شده با این توضیح که در آینده متدهای مربوط به کلاس مذکور را پیاده‌سازی کرده و آن را تکمیل خواهیم نمود. در چنین شرایطی، اجرای کد فوق نیز مشکلی در روند انجام سایر تَسک‌های اپلیکیشن به وجود نمی‌آورد.

حال سؤالی که پیش می‌آید این است که «چرا جهت مشخص کردن بخش‌های مورد نظر از سورس‌کد که باید در آینده تکمیل شوند از درج کامنت‌ به جای دستور pass استفاده نمی‌شود؟» که در پاسخ به این سؤال در ادامه تفاوت‌های مابین کامنت‌گذاری و استفاده از دستور pass را تشریح می‌کنیم.

آشنایی با تفاوت‌های مابین کامنت‌گذاری و استفاده از دستور pass

در زبان برنامه‌نویسی پایتون کامنت‌ها و همچنین دستور pass عملکردی مشابه دارند بدین معنی که هر دو را می‌توان به منظور یادآوری جهت توسعه و یا تکمیل بخشی از سورس‌کد مورد استفاده قرار داد اما این در حالی است که مفسر پایتون مابین دستورات کامنت‌شده در سورس‌کد و دستور pass تفاوت‌هایی قائل است بدین صورت که دستورات کامنت‌شده را در حین اجرای اپلیکیشن نادیده گرفته و آن‌ها را اجرا نمی‌کند در حالی که دستور pass توسط مفسر اجرا می‌شود که حاوی پیامی مبنی بر عدم انجام کاری می‌باشد.

همچنین استفاده از کامنت در سورس‌کد به منظور مشخص کردن برخی دستورات مورد نظر توصیه نمی‌شود چرا که این امر موجب شلوغی سورس‌کد شده و در پروژه‌های بزرگ تشخیص کامنت‌های مذکور از سایر کامنت‌ها تا حدودی دشوار می‌باشد اما این در حالی است که با استفاده از دستور pass به سادگی می‌توان بخش‌های مورد نظر را شناسایی کرده و در صورت نیاز آن‌ها را تکمیل نمود.


لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
کاربر میهمان
saeedbarzgarمن یک کاربر مهمان هستم
۱۳۹۸/۰۳/۲۵
سلام
خسته نباشید و ممنون از تکمیل شدن دوره
برام سؤال پیش اومد به کار بردن passداخل بدنه if چه فرقی با contiue داره؟؟
جفتشون اگه شرط برقراز بود عملیات حلقه رو از سرمیگیرن.
ممنون میشم جواب رو دریافت کنم