آشنایی با نحوۀ تعریف و فراخوانی فانکشن‌هایی با تعداد پارامترهای ورودی متغیر در پایتون


در تمامی فانکشن‌هایی که تاکنون در مثال‌های آموزشی این دوره تعریف کرده‌ایم، تعداد پارامترهای ورودی از همان ابتدا ثابت و مشخص بود که در اکثر موارد نیز تعریف فانکشن در این زبان بدین روش انجام می‌شود و نیاز به توضیح نیست که رفع ارورهای احتمالی در چنین شرایطی به مراتب آسان‌تر می‌گردد اما این در حالی است که گاهی نمی‌توان تعداد پارامترهای ورودی یک فانکشن را در هنگام تعریف آن مشخص کرد که برای مثال برخی فانکشن‌های Built-in از جمله فانکشن ()print را نام می‌بریم که بارها در زمان فراخوانی به تعداد دلخواه آرگومان ورودی به آن داده‌ایم.

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

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

>>> def multiply(a, b):
        print (a * b)
>>> multiply(2, 3)
6

در کد فوق، یک فانکشن ساده تحت عنوان ()multiply تعریف کرده‌ و دو متغیر ورودی به نام‌های a و b برای آن در نظر گرفته‌ایم که در اینجا هر یک از متغیرهای a و b به منزلۀ پارامتر ورودی به فانکشن مذکور می‌باشند. در ادامه، دستورات داخلی فانکشن را داریم که گفته‌ایم هر یک از مقادیر ورودی به فانکشن ()multiply و منتسب به پارامترهای ورودی را در هم ضرب کرده و در خروجی چاپ کند. در سطر سوم هم فانکشن ()multiply را فراخوانی نموده‌ایم که در اینجا هر یک از اعداد 2 و 3 به عنوان آرگومان ورودی در نظر گرفته شده و به ترتیب به پارامترهای ورودی a و b منتسب شده و در هم ضرب می‌شوند و در نهایت هم عدد 6 در خروجی چاپ می‌گردد (توجه داشته باشیم که در فراخوانی یک فانکشن تعداد آرگومان‌های ورودی می‌باید دقیقاً مشابه تعداد پارامترهای ورودی تعریف‌شده برای آن باشند.)

این بخش از محتوا مخصوص کاربرانی است که ثبت‌نام کرده‌اند.
جهت مشاهدهٔ این بخش از محتوا لاگین نمایید.

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

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

دانلود فایل‌های تمرین

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
محمود نوری
محمود نوری
۱۳۹۸/۰۵/۱۶
اگر در تابع addition سطر دوم یعنی sum=0را وارد نکنیم چی میشه و چرا؟
کاربر میهمان
علیرضامن یک کاربر مهمان هستم
۱۳۹۵/۰۹/۱۷
میتوانید چگونگی نوشتن این برنامه را به من بگویید؟
برنامهای بنویسید که یک عدد از کاربر دریافت کند و به تعداد آن عدد، اعدادی را از کاربر دریافت کند و ماکزیمم max آن اعداد را چاپ کند.
)برای مثال کاربر اگر 10 وارد کند به این معنی است که میخواهد 10 عدد وارد کند و ماکزیمم max این اعداد را دریافت کند(
2 . برنامهای بنویسید که یک عدد از کاربر دریافت کند و به تعداد آن عدد، اعدادی را از کاربر دریافت کند و مینیمم min آن اعداد را چاپ کند.
)برای مثال کاربر اگر 10 وارد کند به این معنی است که میخواهد 10 عدد وارد کند و مینیمم min این اعداد را دریافت کند(
3 . برنامههای تمرین 1 و 2 را در یک برنامه ادغام کنید و میانگین اعداد وارد شده توسط کاربر را نیز محاسبه کنید. )برای مثال کاربر ابتدا عدد 5 را
وارد میکند و این به این معنی است که کاربر میخواهد 5 عدد وارد کند و بعد از وارد شدن 5 عدد توسط کاربر در انتها برنامه بزرگترین عدد،
کوچکترین عدد و میانگین اعداد را نمایش میدهد(
naeimfa
naeimfa
۱۳۹۵/۰۶/۰۷
سلام ، خسته نباشید ، چرا وقتی برنامه ی نوشته شده رو ذخیره میکنم بعد اجراش می کنم ، بعد از یک لحظه اجرا ، برنامه بسته میشود ؟ چطوری کاری کنم که صفحه ی اجرا شده بمونه تا خودم ببندمش !