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


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

به منظور درک بهتر این موضوع، فانکشنی تعریف می‌کنیم که در هر بار فراخوانی نام کاربر را به عنوان آرگومان ورودی گرفته و یک پیغام خوشامدگویی همراه با نام کاربر مذکور در خروجی چاپ کند که برای این منظور برنامۀ زیر را در فایلی به نام greetUserFunc.py ذخیره کرده و اجرا می‌کنیم:

def greetUser(name):
    print("Hello dear", name, ",")
    print("Welcome to SokanAcademy.com")
greetUser('Ali')
greetUser('Sara')
greetUser('Amir')

همان‌طور که می‌بینید، فانکشنی تحت عنوان ()greetUser تعریف کرده و پارامتر ورودی به نام name را برای آن در نظر گرفته‌ایم و بدین ترتیب در صورت فراخوانی این فانکشن، آرگومان ورودی به پارامتر مذکور ارجاع داده شده و در بدنۀ فانکشن مورد استفاده قرار می‌گیرد که در آن گفته‌ایم در صورت فراخوانی، استرینگ مربوط به نام کاربر را به عنوان آرگومان ورودی دریافت کرده و با استرینگ «Hello dear» کانکت کرده و در خروجی چاپ کند و در سطر بعد نیز گفته‌ایم استرینگ «Welcome to SokanAcademy.com» در ادامه چاپ شود.

در ادامه، فانکشن ()greetUser را سه مرتبه پشت سر هم و با آرگومان‌های ورودی متفاوت فراخوانی می‌کنیم که در هر مرتبه استرینگ مد نظر به متغیر name منتسب شده و به همراه استرینگ «Hello dear» در خروجی چاپ می‌شود و به دنبال آن نیز استرینگ «Welcome to SokanAcademy.com» در سطر بعدی چاپ می‌شود که در نهایت خروجی حاصل از اجرای کد فوق بدین ترتیب خواهد بود:

Hello dear Ali ,
Welcome to SokanAcademy.com
Hello dear Sara ,
Welcome to SokanAcademy.com
Hello dear Amir ,
Welcome to SokanAcademy.com

همان‌طور که می‌بیند، سه آرگومان ورودی متفاوت به فانکشن ()greetUser داده‌ایم که در هر مرتبه استرینگ متناسب با نام کاربر ورودی در خروجی چاپ شده است.

نکته
پارامترهای ورودی در هر فانکشن‌ متغیری هستند که همچون تمامی متغیرها بهتر است نام‌هایی اصولی و معنادار برای‌شان انتخاب شود به طوری که شناسۀ منتسب به آن‌ها نشان‌دهندۀ ماهیت آرگومان‌های ورودی به این فانکشن‌ها باشند.

به عنوان یک مثال از نام‌گذاری اصولی متغیرها می‌توانیم فانکشنی را در نظر بگیریم که چند آرگومان ورودی فرضی همچون نام و رنگ می‌گیرد و یکسری پردازش‌ روی آن‌ها انجام می‌دهد که در این مورد برای نام‌گذاری پارامترهای ورودی می‌توان به ترتیب از شناسه‌هایی مانند color و name استفاده کرد. البته توجه داشته باشیم که یک فانکشن می‌تواند به تعداد دلخواه و مورد نیاز پارامتر ورودی بگیرد که در این مورد فرم کلی بخش هِدِر فانکشن به صورت زیر خواهد بود:

def functionName(par1, par2, par3, ..., parN)

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

def times(value1, value2):
    print(value1 * value2)

در کد فوق، فانکشن ()times با دو پارامتر ورودی تعریف شده است که در هنگام فراخوانی چنین فانکشن‌هایی رعایت یکسری نکات ضروری می‌باشد که در ادامه به بررسی آن‌ها می‌پردازیم.

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

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
کاربر میهمان
بهمنمن یک کاربر مهمان هستم
۱۳۹۵/۰۸/۱۷
من برنامه رو سیو میکنم بعد اجار میزنم برنامه سریع باز میشه بسته میشه
مثلا سیو کردم
hi.py
ولی خب باز میشه سریع بسته میشه
چرا در مورد سیو کردن برنامه یا ساخت برنامه ویندوز چیزی نمیگید
فردی
فردی
۱۳۹۵/۰۷/۲۳
با سلام و خسته نباشید. میشه لطفا بفرمایید اشکال برنامه زیر چه هست. در تابع خود مگه نمیتونیم از متغیرهایی که بیرون هم هستند استفاده کرد؟
def getArgsNumber():
a+=3
b=a/4
a=input("enter a number..")
a=int(a)
if a>1:
getArgsNumber()
print(a)
print(a)