در این مطلب، ۲۳ نمونه سوال تابع در پایتون را با جواب و کد بررسی کرده‌ایم. تابع به بلوک‌هایی از کدهای پایتون گفته می‌شود که با هدف انجام وظیفه مشخص و در چهار‌چوب معینی نوشته شده‌‌اند. با استفاده از تابع در پایتون می‌توانیم کدهای خود را به صورت ماژولار بنویسیم. در ضمن این کدها قابلیت استفاده مجدد و بدون محدودیت را دارند. به طور معمول، برای نوشتن توابع از کلمه کلیدی def در پایتون استفاده می‌کنیم. اما روش‌های دیگری هم مانند دستورات lambda برای نوشتن توابع یک‌خطی در دسترس هستند. برنامه نویسان پایتون باید انواع روش‌های طراحی و استفاده از توابع را بلد باشند.

آنچه در این مطلب می‌آموزید:

  • روش نوشتن تابع برای انجام محاسبات مقایسه‌ای و ریاضی را یاد می‌گیرید.

  • می‌آموزید که چگونه در ورودی تابع رشته دریافت کرده و در خروجی معکوس آن را برگردانید.

  • روش استفاده از پارامتر با مقدار پیش‌فرض را در زمان تعریف تابع یاد می‌گیرید.

  • یاد می‌گیرید که چگونه به توابع، نام جدیدی اختصاص دهید و کدهای رشته‌ای را اجرا کنید.

  • با پارامتر‌های args* و kwargs** آشنا شده و روش استفاده از آن‌ها را می‌آموزید.

  • متوجه می‌شوید که تابع lambda چیست و چگونه باید از آن استفاده کرد.

فهرست مطالب این نوشته
997696

در این مطلب از مجله فرادرس، چند نمونه سوال پایتون را همراه با جواب نوشته و راه حل آن‌ها را توضیح می‌دهیم. این نمونه سوالات را از ساده به دشوار به ترتیب بیان کرده و حل می‌کنیم. در این تمرینات، مباحث مختلفی مانند توابع ریاضی، استفاده از args* و kwargs** و دستورات «lambda» را مطرح می‌کنیم.

پیدا کردن عدد بزرگ‌تر در بین سه عدد

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

در کادر پایین، روش حل این سوال با کمک ۲ تابع جدا از هم نوشته شده است.

در خط آخر از کدهای بالا اعداد (3, 6, -5) به عنوان ورودی به تابع داده شده‌‌اند. در نتیجه بعد از اجرای این برنامه، خروجی به صورت عدد 6 تولید شده و در کنسول پایتون نمایش داده می‌شود.

در پایین، روش حل این مسئله را به سه گام مهم تقسیم کرده و هر کدام را به شکل شفاف توضیح داده‌ایم.

  • گام اول: در کادر بالا برای حل این مسئله، دو تابع مختلف تعریف کرده‌ایم. ابتدا تابع max_of_two(x, y)  را توضیح می‌دهیم.

وظیفه تابع max_of_two  پیدا کردن بزرگ‌ترین عدد بین دو عدد است. در فهرست پایین روش کار تابع max_of_two(x, y) را نوشته‌ایم.

  1. این تابع دو عدد x  و y  را می‌گیرد.
  2. شرط if x > y:  بررسی می‌کند که آیا x  بزرگ‌تر از y  است یا نه.
  3. اگر شرط برقرار بود، مقدار x  برگردانده می‌شود.
  4. در غیر این صورت، یعنی اگر y  بزرگ‌تر یا مساوی باشد، مقدار y  برگردانده می‌شود.
تابعی برای محاسبه بزرگترین عدد
نمایش روش کار تابع max_of_two(x, y)
  • گام دوم: اکنون تابع max_of_three(x, y, z)  را تعریف می‌کنیم.

این تابع برای محاسبه بزرگترین عدد از بین سه عدد استفاده می‌شود. اما همین‌طور که مشاهده می‌کنید درون خودش دوباره از تابع max_of_two(x, y) استفاده کرده‌ است. روش کار آن را در فهرست پایین توضیح داده‌ایم.

  1. این تابع سه عدد x  و y  و z  می‌گیرد.
  2. اول max_of_two(y, z)  اجرا می‌شود. خروجی این تابع، بزرگ‌ترین مقدار بین y  و z  است.
  3. سپس نتیجه max_of_two(y, z)   با x  مقایسه می‌شود.
  4. در نهایت، تابع max_of_three(x, y, z) بزرگ‌ترین عدد بین سه عدد ورودی را پیدا و برمی‌گرداند.
فلوچارتی برای نمایش روش محاسبه بزرگترین عدد
تابع max_of_two(x, z, y) برای کار از تابع max_of_two(x, y) استفاده می‌کند.
  • گام سوم: کد print(max_of_three(3, 6, -5))  برای آزمایش کارکرد تابع اجرا می‌شود. همینطور که گفتیم در خروجی تابع max_of_three  مقدار 6  برگشت داده می‌شود.

جمع بستن تمام اعداد درون لیست

در این سوال، لیستی با چند عدد صحیح داده می‌شود. مخاطب باید تابعی با زبان پایتون بنویسد که این لیست پایتون را در ورودی بگیرد و در خروجی، حاصل جمع تمام عناصر لیست را برگرداند. برای مثال اگر لیست [8, 2, 3, 0, 7] را به تابع، ارسال کنیم در خروجی باید عدد 20 برگشت داده شود.

چند مکعب که بر روی آن‌ها عدد نوشته شده است و در پایین نتیجه جمع‌آن‌ها

ابتدا در کادر پایین، پاسخ سوال را می‌نویسیم. سپس روش کار این تابع را با جزئیات توضیح می‌دهیم.

بعد از اجرای کدهای بالا، خروجی برابر با عدد 20 تولید شده و در کنسول پایتون نمایش داده می‌شود. روش کار کدهای بالا را خط‌به‌خط در فهرست پایین توضیح داده‌ایم.

  1. def sum(numbers): ابتدا تابعی به نام sum() تعریف می‌کنیم. این تابع، پارامتری به نام numbers  دریافت می‌کند. پارامتر numbers  همان لیست یا تاپلی است که باید مجموع تمام عناصر آن محاسبه شود.
  2. total = 0: با این کد، متغیری به نام total  ساخته و مقدار اولیه آن را 0  می‌گذاریم. از این متغیر برای ذخیره نتیجه جمع عناصر استفاده می‌کنیم.
  3. for x in numbers: با کمک این کد، حلقه‌ای برای پیمایش عناصر numbers  ایجاد می‌کنیم. در هر بار اجرای حلقه، متغیر x  برابر با یکی از عناصر لیست می‌شود.
  4. total += x: این کد، وظیفه دارد عنصر فعلی x را به مقدار متغیر total  اضافه کند.
  5. return total: این کد نتیجه نهایی را به خارج از تابع برمی‌گرداند.
  6. خط آخر: نتیجه اجرای تابع sum() با دستور print() در خروجی نمایش داده می‌شود.

معکوس کردن رشته

در این نمونه سوال تابع در پایتون از کاربر خواسته شده است که تابعی برای معکوس کردن رشته‌ها بنویسد. برای مثال، فرض کنیم که رشته 1234abcd به تابع ارسال می‌شود. این تابع باید در خروجی رشته dcba4321 را برگرداند.

ابتدا تابع جواب حل مسئله را نوشته‌ایم. سپس روش کار تابع را توضیح دادیم.

بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

dcba4321

در فهرست پایین، مراحل کار کد بالا را توضیح داده‌ایم.

  1. با کمک کد def string_reverse(str1)  تابعی به نام string_reverse  تعریف می‌کنیم. این تابع رشته str1 را می‌گیرد و نسخه معکوس آن را برمی‌گرداند.
  2. با کد rstr1 = ”  رشته‌ای خالی برای نگهداری رشته معکوس می‌سازیم.
  3. با کمک کد index = len(str1)  طول رشته ورودی را محاسبه کرده و در متغیر index  ذخیره می‌کنیم.
  4. تا زمانی که index  به صفر برسد، حلقه‌ while اجرا می‌شود.
  5. کد rstr1 += str1[index – 1]  در هر بار اجرای حلقه، یک کاراکتر از انتهای str1  به ابتدای rstr1  اضافه می‌کند.
  6. سپس مقدار index  را یک واحد کاهش می‌‌دهیم. با این کار از انتهای رشته به سمت ابتدای آن حرکت می‌کنیم.
  7. پس از پایان حلقه، رشته معکوس شده را به خارج از تابع برمی‌گردانیم.
چند مکعب نورانی به عنوان نماد‌هایی از بلوک‌های تابع در برنامه نویسی

بررسی عضویت عدد در محدوده

در این مسئله محدوده خاصی از قبل مشخص شده است، برای مثال اعداد بین ۳ و ۹. سپس از کاربر خواسته شده تا تابعی بنویسد و عضویت اعداد داده شده را در این محدوده بررسی کند.

فلوچارت تابعی برای بررسی عضویت عدد در محدوده
فلوچارت تابع برای بررسی عضویت عدد در محدوده

فرض کنیم که به این تابع عدد 5  را داده‌ایم. خروجی تابع باید به شکل 5 is in the range باشد. در کادر پایین، جواب سوال را نوشته‌ایم.

بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

 5 is in the range

در فهرست پایین، کدهای جواب سوال را توضیح داده‌ایم.

  1. با کد def test_range(n):  تابعی به نام test_range  تعریف می‌کنیم. این تابع عدد n  را دریافت می‌کند.
  2. عبارت شرطی if n in range(3, 9):  بررسی می‌کند که آیا n  در بازه 3 تا 8 قرار دارد یا نه.
  3.  اگر n  در این بازه باشد، پیام n is in the range چاپ می‌شود.
  4. در غیر این صورت، پیام The number is outside the given range. چاپ می‌شود.

چرا و چگونه پایتون را یاد بگیریم؟

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

مجموعه فیلم‌های آموزش برنامه نویسی پایتون Python – مقدماتی تا پیشرفته فرادرس
با کلیک بر روی تصویر بالا می‌توانید به صفحه اصلی مجموعه فیلم‌های آموزش برنامه نویسی پایتون Python از مقدماتی تا پیشرفته هدایت شوید.

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

در پایین، چند مورد از فیلم‌های آموزشی دیگر را معرفی کرده‌ایم. این فیلم‌ها برای آموزش سطوح پیشرفته‌ پایتون مفید هستند.

شمارش حروف بزرگ و کوچک انگلیسی

اکنون باید تابعی بنویسیم که در ورودی رشته‌ دریافت کند. سپس تمام کاراکترهای رشته را بررسی کرده و تعداد دقیق حروف بزرگ و کوچک انگلیسی آن را برگرداند. برای مثال فرض کنیم که رشته The quick Brown Fox را به تابع ارسال کرده‌ایم. خروجی تابع باید به شکل زیر باشد.

No. of Upper case characters : 3
No. of Lower case Characters : 13

در کادر پایین برای این نمونه سوال تابع در پایتون، جوابی را نوشته‌ایم.

بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

Original String :  The quick Brown Fox
No. of Upper case characters :  3
No. of Lower case Characters :  13

در فهرست پایین روش کار کدهای جواب مسئله را نوشته‌ایم.

  1. با کد def string_test(s):  تابعی ساخته شده است. این تابع به عنوان پارامتر ورودی فقط یک متغیر – s - دریافت می‌کند.
  2. در خط ۲ دیکشنری d  را با دو کلید “UPPER_CASE”  و “LOWER_CASE”  ساخته‌ایم. این کلید‌های برای شمارش حروف بزرگ و کوچک استفاده می‌شوند.
  3. با استفاده از حلقه for رشته s  را کاراکتر به کاراکتر پیمایش می‌کنیم.
  4. اگر کاراکتری بزرگ باشد، مقدار “UPPER_CASE”  یک واحد افزایش می‌یابد. برای بررسی این مسئله از متد .isupper()  استفاده کرده‌ایم.
  5. اگر کاراکتری کوچک باشد، مقدار “LOWER_CASE”  یک واحد افزایش می‌یابد. برای بررسی این مسئله از متد .islower() استفاده کرده‌ایم.
  6. در نهایت، عبارت اصلی همراه با با تعداد حروف بزرگ و کوچک آن نمایش داده می‌شود.
فلوچارت تابع شمارش حروف بزرگ و کوچک انگلیسی
برای حل این نمونه سوال تابع در پایتون، هم از حلقه استفاده شده است و هم از عبارت شرطی.

بررسی اول بودن اعداد

در این مسئله، خواسته شده است تا تابعی را برای بررسی اول بودن اعداد، تعریف کنیم. این تابع – به عنوان ورودی – فقط یک پارامتر دریافت کند. سپس بررسی کند که آیا این پارامتر از نوع اعداد اول است یا نه.

نکته: عدد اول، عدد صحیحی است که بزرگتر از ۱ باشد و هیچ مقسوم‌علیه‌ی به غیر از خودش و ۱ نداشته باشد.

فلوچارت تابع برای بررسی اول بودن عدد
عدد اول به هیچ عددی به غیر از خودش و یک، بخش‌پذیر نیست.

در کادر پایین جواب این سوال را نوشته‌ایم.

بعد از اجرای کدهای بالا، خروجی به شکل عبارت False در کنسول پایتون، نمایش داده می‌شود.

در فهرست پایین روش کار کدهای جواب مسئله را نوشته‌ایم.

  1. با کد def test_prime(n):  تابعی ساخته‌ایم. این تابع، پارامتر n  را دریافت می‌کند.
  2. در خط‌های ۲ تا ۳، بررسی می‌کنیم که آیا n  برابر با 1 است. در این صورت، مقدار False  برگردانده شود. چون 1 عدد اول نیست.
  3. در خط‌های ۴ تا ۵ اگر n  برابر 2 باشد، مقدار True  برگردانده می‌شود. چون 2 عدد اول است.
  4. در غیر این صورت با استفاده از حلقه for  تمام اعداد 2 تا n-1  را بررسی می‌کنیم.
  5. اگر n  بر یکی از این اعداد بخش‌پذیر‌ بود- باقی‌مانده نداشت – مقدار False  برگردانده می‌شود، چون عدد اول نیست.
  6. اگر n  بر هیچ عددی در این محدوده بخش‌پذیر نبود، مقدار True  برگردانده می‌شود. زیرا n  عدد اول است.
یک مهندس برنامه نویسی در حال فکر کردن در مقابل مانیتوری که کلمه پایتون بر روی آن نوشته شده است.

نمونه سوال تابع در پایتون برای بررسی کامل بودن عدد

در این مسئله از کاربر خواسته شده است که تابعی برای بررسی کامل بودن اعداد بنویسد. طبق نظریه اعداد، عدد کامل، عدد صحیح مثبتی است که با مجموع مقسوم‌علیه‌های خودش به غیر از خودش برابر باشد. برای مثال، اولین عدد کامل 6  است. زیرا 6  برابر است با مجموع 1 و 2 و 3. عدد کامل بعدی ۲۸ است. زیرا 28  برابر است با 1 + 2 + 4 + 7 + 14.

در کادر پایین، جواب این مسئله نوشته شده است.

بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

True

در فهرست پایین، روش کار کدهای جواب مسئله را نوشته‌ایم.

  1. در خط اول با کد def perfect_number(n):  تابعی ساخته‌ایم. این تابع فقط مقدار n  را به عنوان پارامتر ورودی دریافت می‌کند.
  2. در خط ۲، متغیر sum  را با مقدار اولیه صفر می‌سازیم. این متغیر مجموع مقسوم‌علیه‌های عدد n  را نگهداری می‌کند.
  3. با استفاده از حلقه for  اعداد را از 1 تا n-1  پیمایش می‌کنیم.
  4. اگر n  بر عدد x  بخش‌پذیر باشد، مقدار x  به sum  اضافه می‌شود.
  5. در پایان، نتیجه بررسی مقایسه مقدار متغیر‌های sum  و n  را به بیرون برمی‌گردانیم.

ساخت لیستی از مربع اعداد ۱ تا ۲۰

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

فلوچارت ساخت لیستی از مربع اعداد ۱ تا ۲۰
روش حل این نمونه سوال تابع در پایتون

لیست خروجی شامل مربع تمام اعداد 1 تا 20 است.

بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400]

در فهرست پایین روش کار کدهای جواب مسئله را نوشته‌ایم.

  1. با کد def printValues():  تابعی به نام printValues  ساخته شده است. این تابع، هیچ پارامتری دریافت نمی‌کند.
  2. در خط دوم لیست خالی به نام l  ساخته‌ایم. از این لیست برای ذخیره کردن مقدار مربع هر عدد استفاده می‌کنیم.
  3. با استفاده از حلقه for  اعداد از 1 تا 20  پیمایش می‌شوند. برای پیمایش حلقه از شمارنده i  استفاده می‌شود. بعد از هر با اجرای دستورات حلقه مقدار i، یک واحد زیاد می‌شود.
  4. در هر تکرار، مربع i محاسبه شده و به لیست l اضافه می‌شود.
  5. در پایان، لیست شامل مربع اعداد از 1 تا 20  است. در نهایت، تمام این اعداد با استفاده از print  نمایش داده می‌شوند.
برنامه نویس در حال قرار دادن عدد دو دریک بلوک مکعبی شکل برای دسترسی به عدد ۸ است.

نمونه سوال تابع در پایتون، آرگومان پیش‌فرض

در این سوال، خواسته شده است که تابعی به نام show_employee()  تعریف کنیم. این تابع باید مشخصات زیر را داشته باشد.

  • تابع باید دو آرگومان را برای نام کارمند و مقدار حقوق به عنوان ورودی دریافت بکند.
  • در انتها هم باید نام و حقوق را بر روی کنسول چاپ کند.
  • در زمان فراخوانی تابع اگر هیچ مقداری به عنوان حقوق به آن ارسال نشده بود، خودش مقدار حقوق را برابر با 9000  در نظر بگیرد.

برای مثال، تابع را به شکل‌های زیر فراخوانی می‌کنیم.

در این صورت، خروجی تابع باید به شکل پایین باشد.

Name: Ben salary: 12000
Name: Jessa salary: 9000

در کادر پایین، روش حل این مسئله را پیاده‌سازی کرده‌ایم.

بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

Name: Ben salary: 12000
Name: Jessa salary: 9000

در فهرست پایین روش کار کدهای جواب مسئله را نوشته‌ایم.

  1. با کد def show_employee(name, salary=9000)  تابعی ساخته شده است. این تابع دو پارامتر name  و salary  را دریافت می‌کند.
  2. پارامتر salary  دارای مقدار پیش‌فرض 9000  است، بنابراین اگر هنگام فراخوانی هیچ مقداری به آن داده نشود، از مقدار پیش‌فرض استفاده می‌کند.
  3. داخل تابع، نام و حقوق کارمند با استفاده از print  نمایش داده می‌شوند.
  4. در خط‌‌های ۴ و ۵، تابع دو بار فراخوانی شده است.

استفاده از مقدار پیش فرض پارامتر‌، زمانی مناسب است که در زمان فراخوانی تابع، این مقدار ارسال نشود. در این صورت، تابع از مقدار پیش‌فرض استفاده می‌کند. برای تعیین مقدار پیش‌فرض برای پارامتر‌ها فقط کافی است که در زمان تعریف تابع با کمک عملگر =  مقداری را به پارامتر مورد نظر تخصیص دهیم.

بازگرداندن چند مقدار از تابع

در این مثال از کاربر خواسته شده که تابعی به نام calculation()  بنویسد. این تابع باید دو متغیر مختلف را در ورودی دریافت کند. سپس حاصل جمع و تفریق آن‌ها را محاسبه کرده و در خروجی این دو مقدار را برگرداند.

بعد از اجرای کدهای بالا، خروجی به شکل تاپل (50, 30) در کنسول پایتون نمایش داده می‌شود.

در فهرست پایین روش کار کدهای جواب مسئله را نوشته‌ایم.

  1. با کد def calculation(a, b):  تابعی ساخته‌ایم. این تابع دو پارامتر a  و b  را دریافت می‌کند.
  2. در داخل تابع، متغیر addition  مقدار a + b  و متغیر subtraction  مقدار a – b  را ذخیره می‌کند.
  3. در خط ۴، تابع با استفاده از «return addition, subtraction» همزمان دو مقدار را برمی‌گرداند. این مقادیر به شکل تاپل ذخیره می‌شوند.

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

صفحه کد نویسی مینیمال با خطوط رنگی - نمونه سوال تابع در پایتون

تخصیص نام جدید به تابع

در کادر پایین، تابع display_student(name, age)  را تعریف کرده‌ایم. باید برنامه‌ای بنویسیم که نام جدید show_student(name, age)  را به تابع اختصاص بدهد. سپس با استفاده از این نام دوباره تابع را فراخوانی کنیم.

برای مثال با استفاده از کد زیر هم باید بتوان این تابع را فراخوانی کرد.

جواب این سوال را در کادر پایین پیاده‌سازی کرده‌ایم.

بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

Mostafa 37
Mostafa 37

در فهرست پایین، روش کار کدهای جواب مسئله را نوشته‌ایم.

  1. تابع display_student() دو پارامتر name  و age  را دریافت کرده و آن‌ها را چاپ می‌کند.
  2. در خط ۵، تابع با نام اصلی خودش display_student() صدا زده شده است. بنابراین، عبارت “Mostafa”, 37  چاپ می‌شود.
  3. در خط ۸، خود تابع به متغیر دیگری به نام showـStudent  تخصیص داده شده است. از این به بعد می‌توانیم همان تابع را با نام showـStudent  نیز فراخوانی کنیم.
  4. در فراخوانی دوم – خط ۱۰ – هم مقادیر “Mostafa”, 37 چاپ می‌شوند.

برای تخصیص دادن نام جدید به تابع می‌توانیم از عملگر =  استفاده کنیم. فقط کافی است که شیء تابع را مساوی با متغیر جدید بگذاریم. سپس با کمک این نام به راحتی می‌توانیم تابع را فراخوانی کنیم.

اجرای رشته‌ی حاوی کد پایتون

بعضی از وقت‌ها شاید بخواهیم بعضی از کدهای پایتون را به کامنت‌ تبدیل کرده و در متغیری ذخیره کنیم. بعدا هم می‌توانیم این کدهای ذخیره شده را اجرا کنیم. در این نمونه سوال تابع در پایتون، باید کدی برای اجرای این نوع از توابع بنویسیم.

فرض کنید تابع خاصی از برنامه به کامنت تبدیل شده‌ است. اکنون می‌خواهیم کد جدید، این کامنت‌ها را خوانده و تابع درون آن‌ها را اجرا کند. در مثال پایین، کدهای پایتون را به دو روش مختلف به کامنت تبدیل کرده‌ایم.

بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

hello world
Multiply of 2 and 3 is: 6

در فهرست پایین روش کار کدهای جواب مسئله را نوشته‌ایم.

  1. با کد «mycode = ‘print(“hello world”)’» رشته‌ای ساخته شده است. این رشته، شامل کد پایتون برای چاپ عبارت “hello world”  است.
  2. در خط‌های ۵ تا ۹ هم متغیر code  ساخته شده است. این متغیر شامل رشته چندخطی است. این رشته، ساختاری شبیه به تابع دارد.
  3. با استفاده از تابع exec(mycode)  رشته mycode  به عنوان کد پایتون اجرا می‌شود. در اثر اجرای این رشته، متن “hello world”  چاپ می‌شود.
  4. با استفاده از تابع exec(code)  رشته چندخطی code  اجرا می‌شود. این رشته خودش شامل تابع multiply  است.

نکته: برای اجرای کدهای کامنت شده در این برنامه از تابع exec()  استفاده شده است.

تصویر مفهومی از بلوک‌های مختلف کدهای برنامه نویسی

شمارش تعداد متغیر‌های محلی تابع

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

بعد از اجرای کدهای بالا، خروجی به شکل عدد 3 در کنسول پایتون نمایش داده می‌شود.

در فهرست پایین، روش کار کدهای جواب مسئله را نوشته‌ایم.

  1. در خط اول، با کد def abc():  تابعی ساخته شده‌ایم. این تابع هیچ پارامتری دریافت نمی‌کند.
  2. از خط ۲ تا ۴ در داخل تابع، سه متغیر محلی تعریف و مقداردهی شده‌اند.
  3. در خط ۶، رشته “Python Exercises”  با استفاده از تابع print  نمایش داده می‌شود.
  4. در خط آخر، با کمک کد abc.__code__.co_nlocals  تعداد متغیرهای محلی داخل تابع abc() را شمرده‌ایم. نتیجه با استفاده از تابع print  چاپ می‌شود.

در واقع مهم‌ترین بخش برای حل این مسئله، عبارت abc.__code__.co_nlocals است. با کمک این عبارت می‌توان تعداد متغیر محلی درون هر تابعی را بدست آورد.

تغییر مقدار متغیر سراسری در تابع

در این سوال خواسته شده است که متغیر سراسری به نام global_var  تعریف کرده و مقدار 10  را به آن اختصاص بدهیم. سپس تابعی را بنویسیم که در داخل خودش مقدار این متغیر سراسری را تغییر می‌دهد.

بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

Inside function: 20
Outside function: 20

در فهرست پایین روش کار کدهای جواب مسئله را نوشته‌ایم.

  1. ابتدا متغیری سراسری به نام global_var  را با مقدار 10  ساخته‌ایم.
  2. سپس تابعی را به نام modify_global_var  تعریف کرده‌ایم.
  3. در داخل تابع از کلمه کلیدی global  استفاده می‌کنیم. این کلمه کلیدی، بیان می‌کند که متغیر global_var  از نوع سراسری است.
  4. در خط ۵ در داخل تابع مقدار global_var  را تغییر داده و برابر 20 می‌گذاریم.
  5. سپس با کمک دستور print  مقدار این متغیر را چاپ می‌کنیم.
  6. از آنجا که این متغیر، سراسری است. بعد از خروج از تابع هم مقدار آن 20 خواهد بود.

نکته: برای ساختن متغیر سراسری لازم نیست کار خاصی بکنیم. اما برای استفاده از آن در بلوک‌های مختلف – مانند تعریف تابع – باید با کمک کلمه کلیدی global سراسری بودن آن را به مفسر پایتون اعلام کنیم. در غیر این صورت، پایتون متغیر محلی با همان نام می‌سازد.

دختری در حال حل نمونه سوال تابع در پایتون است.

ساخت تابع بازگشتی

در این مسئله از ما خواسته شده است که برنامه‌ای برای محاسبه حاصل جمع اعداد 0  تا 10  بنویسیم. در متن سوال تاکید شده که حل این سوال باید با کمک تابع بازگشتی انجام شود.

نکته: تابع بازگشتی به تابعی گفته می‌شود که خودش را به صورت تکراری فراخوانی می‌کند.

بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

55

در فهرست پایین روش کار کدهای جواب مسئله را نوشته‌ایم.

  1. در خط اول با کد def addition(num):  تابعی ساخته‌ایم. این تابع جمع اعداد از 1 تا num  را با استفاده از تکنیک بازگشتی محاسبه می‌کند.
  2. با کد if num:  مقدار متغیر num  را بررسی می‌کنیم.
  3. اگر این مقدار صفر نباشد، یعنی True  باشد. همان تابع – این بار با num – 1  -دوباره فراخوانی می‌شود. سپس مقدار فعلی num  به نتیجه اضافه می‌شود.
  4. اگرnum  برابر صفر یا False  بود، مقدار 0  برگردانده شده و بازگشت متوقف می‌شود.
  5. در خط ۸، با کد addition(10)  مجموع اعداد 1 تا 10  محاسبه و در متغیر res  ذخیره می‌شود.
فلوچارت روش کار تابع بازگشتی
فلوچارت روش کار تابع بازگشتی

تابع بازگشتی برای محاسبه فاکتوریل

در این مسئله از ما خواسته شده است که مقدار فاکتوریل اعداد را با کمک تابع بازگشتی محاسبه کنیم.

ابتدا روش حل مسئله را نوشته‌ایم. سپس کدهای آن را توضیح می‌دهیم.

بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

The factorial of 5 is 120

در فهرست پایین روش کار کدهای جواب مسئله را نوشته‌ایم.

  1. در خط اول تابعی به نام factorial_recursive()  ساخته‌ایم. این تابع پارامتر n  را دریافت می‌کند.
  2. در داخل بدنه تابع، مقدار n  را با ساختار شرطی if-elif-else  بررسی می‌کنیم.
    • در بلوک if اگر مقدار ورودی n  منفی باشد، ادامه کار تابع با خطای ValueError  متوقف می‌شود. زیرا فاکتوریل برای اعداد منفی تعریف نشده است.
    • در بلوک elif برابری مقدار n  را با صفر بررسی می‌کنیم. اگر شرط این بلوک درست بود، عدد 1 برگردانده می‌شود، چون فاکتوریل صفر برابر 1 است.
    • در بلوک else  متوجه شده‌ایم که n حتما بزرگتر از 0  است. بنابراین مقدار n  را در نتیجه تابع «factorial_recursive(n-1)» ضرب می‌کنیم. این بلوک شرطی، همان مرحله بازگشتی است. انجام عملیات این بلوک تا رسیدن n  به صفر ادامه پیدا می‌کند.
  3. در خط‌های ۱۰ و ۱۱، مقدار 5  به عنوان پارامتر به تابع داده شده است. نتیجه کار تابع فاکتوریل در متغیر result  ذخیره می‌شود.
  4. در پایان با کمک print  نتیجه کار تابع را نمایش داده‌ایم. مقدار خروجی فاکتوریل برای عدد 5  برابر با 120 است.

تابعی با تعداد پارامتر نامحدود

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

کلمه کلیدی def برای تعریف تابع با فلش‌های نورانی که به دور آن می‌چرخند.

نکته: تعداد متغیر دریافت شده توسط تابع نامحدود است. پس دستورات مربوط به انجام پردازش باید بر روی تمام این متغیر‌ها اعمال شود. در نهایت مقدار هر متغیر را به شکل مجزا در خروجی چاپ می‌کنیم.

برای مثال اگر تابع به صورت func1(20, 40, 60) یا func1(80, 100) فراخوانی شود، باید خروجی آن به شکل‌های زیر باشد.

Printing values
20
40
60

Printing values
80
100

در بخش پایین راه حل این مسئله نوشته شده است.

بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

10
20
hello
3.14
True
1
2
3
4
5

در فهرست پایین روش کار کدهای جواب را نوشته‌ایم.

  1. با کد def func1(*args):  تابعی ساخته شده که می‌تواند هر تعداد پارامتر ورودی دریافت کند.
  2. با استفاده از حلقه for، پارامتر‌های موجود در *args یکی‌یکی پیمایش شده و با دستور print  نمایش داده می‌شوند.
  3. از خط ۶ به بعد هم تابع با چند داده‌ مختلف، فراخوانی شده است.

نکته: برای اینکه تابعی بتواند تعداد نامحدودی متغیر دریافت کند باید از عبارت *args  به عنوان پارامتر استفاده کنیم. این عبارت از دو بخش *  و args  تشکیل شده است. وجود ستاره در آن اجباری است. وجود args  هم همین‌طور اما می‌توان به‌جای args  از هر کلمه دیگری استفاده کرد. تمام پارامتر‌های ارسال شده به تابع تا زمان استفاده در ساختاری به شکل تاپل قرار می‌گیرند.

ساخت تابع با استفاده از kwargs**

در این نمونه سوال تابع در پایتون از ما خواسته شده است تابعی بسازیم که بتواند بدون محدودیت «آرگومان کلمه کلیدی» (Keyword Argument) دریافت کند. آرگومان کلمه کلیدی به معنای آن است که نام آرگومان را همراه با مقدار آن مشخص کنیم. برای مثال، ورودی‌های دلخواه name=”Alice”  و age=30  آرگومان کلمه کیدی یا **kwargs  هستند. در داخل تابع باید به این مقادیر دسترسی داشته باشیم. زیرا می‌خواهیم آن‌ها را مانند جفت‌های کلید-مقدار در خروجی چاپ کنیم.

بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

--- Information ---
name: Alice
age: 30
city: New York

--- Information ---
job: Engineer
salary: 75000

--- Information ---
country: USA
state: California
zip_code: 90210

در فهرست پایین روش کار کدهای جواب مسئله را نوشته‌ایم.

  1. تابع print_info()  را با آرگومان **kwargs  تعریف کرده‌ایم. این تابع می‌تواند تعداد نامحدودی آرگومان کلید-مقدار را دریافت کند.
  2. درون تابع – در خط ۲ – آرگومان‌ها را بررسی می‌کنیم. اگر آرگومان وجود داشت، متن — Information —  چاپ می‌شود. سپس با کمک حلقه for  همه جفت‌های کلید و مقدار نمایش داده می‌شوند.
  3. اگر هیچ آرگومانی داده نشده بود – خط ۶ و ۷ – متن No information provided.  چاپ می‌شود.
  4. سپس با استفاده از سه مثال مختلف و دادن پارامتر‌های متفاوت عملکرد تابع را بررسی کرده‌ایم.
نماد‌های مختلفی از داده‌ها به دور لپتاپی با لوگوی پایتون می‌چرخند.

**kwargs  از نوع دیکشنری است. بنابراین با کمک حلقه for می‌توانیم بر روی کلید‌ها و مقدار‌های kwargs.items()  پیمایش کنیم. به سینتکس شمارنده، حلقه for  توجه کنید. با پیمایش درست بر روی دیکشنری می‌توانیم تمام کلید‌ها و مقدار‌های درون **kwargs  را مشاهده کنیم. در پایان برنامه هم برای آزمایش، تابع را چند بار با جفت‌های کلید و مقدار مختلف فراخوانی کرده‌ایم.

استفاده از تابع lambda برای محاسبه مربع اعداد

در این نمونه سوال تابع در پایتون، با نوع خاصی از توابع کار می‌کنیم. با کمک تابع lambda  می‌خواهیم مربع عدد داده شده را محاسبه کنیم. تابع lambda  نوعی تابع کوچک و بدون نام در پایتون است. برای تعریف کردن این نوع از توابع از کلمه کلیدی lambda  استفاده می‌کنیم. سینتکس تعریف این تابع به شکل lambda arguments: expression نوشته می‌شود. کلمه کلیدی lambda  در این سینتکس ثابت است. arguments  مقدار ورودی تابع را نشان می‌دهد. expression  دستوری است که باید بر روی مقدار ورودی تابع انجام شده و نتیجه‌اش را به بیرون برگردانیم.

بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

The square of 5 is 25

در فهرست پایین، روش کار کدهای جواب مسئله را نوشته‌ایم.

  1. با کد square = lambda x: x**2  یک تابع بی‌نام از نوع lambda  ساخته‌ایم. ورودی این تابع عدد x  است. خروجی آن نیز توان دوم یا مربع عدد x  است.
  2. سپس به عنوان مثال، عدد 5  به این تابع داده می‌شود.
  3. نتیجه کار تابع در متغیر squared_number  ذخیره می‌شود.
  4. در پایان با دستور print  نتیجه چاپ می‌شود.

استفاده از lambda با تابع filter

در این نمونه سوال تابع در پایتون، از کاربر خواسته می‌شود تا با یکی از روش‌های پیشرفته، مسئله‌ای را حل کند. برای حل این مسئله باید از ترکیب تابع lambda  و تابع filter()  استفاده کنیم. سوال این است که تابع lambda  لیستی را به عنوان ورودی تحویل بگیرد و به عنوان جواب، لیستی از تمام اعداد زوج داخل لیست اصلی تشکیل بدهد. برای مثال، فرض کنیم لیست زیر به تابع داده شده است.

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

پاسخ تابع باید به شکل زیر باشد.

The even numbers in the list are: [2, 4, 6, 8, 10]

نکته: باید بدانیم که تابع filter() ۲ آرگومان دریافت می‌کند، یکی از جنس تابع و یکی از نوع اشیاء پیمایش‌پذیر. filter()، تابع دریافت شده را بر روی تمام عناصر موجود در شیء پیمایش‌پذیر اجرا می‌کند. در خروجی هم شیء پیمایش‌پذیری برمی‌گرداند. شی‌ء خروجی شامل تمام عناصری است که نتیجه اجرای تابع بر روی آن‌ها True  شده است.

گوی درخشانی که کلمه lambda بر روی آن نوشته شده است در دستان یک نفر قرار دارد.

به عنوان آرگومان اول از تابع lambda  استفاده می‌کنیم. در این صورت، می‌توانیم شرط مربوط به فیلتر کردن داده‌ها را به صورت مختصر و خلاصه بنویسیم.

بعد از اجرای کدهای بالا، خروجی زیر در کنسول پایتون نمایش داده می‌شود.

The even numbers in the list are: [2, 4, 6, 8, 10]

در فهرست پایین روش کار کدهای جواب مسئله را نوشته‌ایم.

  1. ابتدا لیستی به نام numbers  ساختیم. این لیست شامل اعداد 1 تا 10  است.
  2. سپس با استفاده از filter()  و تابع lambda  بررسی می‌کنیم که کدام اعداد بر 2 بخش‌پذیر هستند.
  3. تابع lambda x: x % 2 == 0  بررسی می‌کند که آیا باقی‌مانده تقسیم x  بر 2 صفر است یا نه. اگر صفر بود، یعنی عدد زوج است.
  4. خروجی filter()  با کمک تابع list()  به لیست تبدیل شده و در متغیر even_numbers  ذخیره می‌شود.
  5. در پایان با دستور print، همه اعداد موجود در لیست even_numbers  نمایش داده می‌شوند.

فیلم های پروژه محور فرادرس برای یادگیری پایتون

مجموعه آموزشی با نام «مجموعه آموزش پروژه محور برنامه نویسی پایتون» در فرادرس تولید شده است. در این مجموعه آموزش، روش پیاده‌سازی پروژه‌های واقعی و گوناگون آموزش داده می‌شود. فیلم‌های پروژه محور فرادرس از موضوعات ساده تا پیشرفته را پوشش می‌دهند. در هر کدام از فیلم‌های آموزشی، تکنولوژی‌ها و کتابخانه‌های مختلفی به کار برده شده‌اند. بعضی از آن‌ها با استفاده از تکنولوژی شیءگرایی پیاده‌سازی شده‌اند و بعضی دیگر با API-های پایتون کار می‌کنند. با مرور این آموزش‌ها می‌توانید مهارت‌های خود را به مقدار چشم‌گیری افزایش بدهید.

در پایین، چند فیلم‌ آموزشی پروژه‌محور زبان پایتون را معرفی کرده‌ایم.

در صورت تمایل با کلیک بر روی تصویر زیر به صفحه اصلی این مجموعه آموزشی هدایت شده و از فیلم‌های پروژه‌محور بیشتری دیدن کنید.

مجموعه آموزش پروژه محور برنامه نویسی پایتون (Python)
با کلیک بر روی تصویر بالا می‌توانید به صفحه اصلی مجموعه فیلم‌های آموزش پروژه محور برنامه نویسی پایتون هدایت شوید.

استفاده از lambda با تابع map

در این سوال می‌خواهیم تمام عناصر ذخیره شده در لیست را با کمک دستورات lambda  و تابع map دو برابر بکنیم. برای مثال، فرض کنیم لیست پایین به برنامه داده شده است.

numbers = [1, 2, 3, 4, 5]

خروجی برنامه باید به شکل زیر باشد.

The doubled numbers are: [2, 4, 6, 8, 10]

نکته: تابع map() ۲ آرگومان دریافت می‌کند. آرگومان اول از جنس تابع است و دومی از نوع اشیاء پیمایش‌پذیری مانند لیست‌ها. map()، پارامتر تابع را بر روی تمام عناصر موجود در شیء پیمایش‌پذیر اجرا می‌کند. سپس در خروجی هم شیء پیمایش‌پذیر برمی‌گرداند. عناصر این شیء، اعضایی از آرگومان دوم تابع map() هستند که نتیجه اجرای آرگومان اول بر روی آن‌ها True  بوده است. برای تعریف عملیات مورد نظر در تابع map() می‌توانیم از دستور‌های lambda  استفاده کنیم.

بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

The doubled numbers are: [2, 4, 6, 8, 10]

در فهرست پایین روش کار کدهای جواب مسئله را نوشته‌ایم.

  1. ابتدا لیستی به نام numbers  ساخته‌ایم. این لیست، شامل اعداد 1 تا 5 است.
  2. سپس با استفاده از تابع map() و دستور lambda  هر عدد لیست را ضرب در 2 کردیم.
  3. تابع lambda x: x * 2  برای هر عدد، به صورت جداگانه اجرا می‌شود.
  4. خروجی map() را با کمک تابع list()  به لیست تبدیل کرده و در متغیر doubled_numbers  ذخیره می‌کنیم.
  5. در پایان با دستور print، مقدار تمام عناصر دو برابر شده لیست اصلی، نمایش داده می‌شوند.

استفاده از lambda با تابع sorted

در این نمونه سوال تابع در پایتون، مسئله پیچیده‌تری را مطرح کرده‌ایم. در این مسئله باید از دستورات lambda  و تابع sorted()  برای مرتب‌سازی عناصر لیست استفاده کنیم. در سوال گفته شده که تمام عناصر این لیست از جنس تاپل‌ هستند. همچنین مرتب‌سازی باید بر اساس دومین عنصر در تاپل انجام شود.

برای مثال، فرض کنیم که لیست زیر به برنامه داده شده است.

data = [('apple', 5), ('banana', 2), ('cherry', 8), ('date', 1)]

خروجی برنامه باید به شکل زیر باشد.

The sorted list of tuples based on the second element is: [('date', 1), ('banana', 2), ('apple', 5), ('cherry', 8)]

نکته: تابع sorted() می‌تواند آرگومانی با نام key  را به عنوان ورودی، دریافت کند. این آرگومان، باید از نوع تابع باشد. تابع مورد نظر، قبل از انجام مقایسه بر روی تمام عناصر اعمال می‌شود. برای تعریف این تابع می‌توانیم از دستورات lambda  استفاده کنیم.

رفتار تابع پایتون برای مرتب‌سازی داده‌ها

در متن سوال گفته شده است که مرتب‌سازی داده‌ها باید بر اساس عناصر با اندیس 1 – عنصر دوم – در هر تاپل انجام شود. این دستور را با کمک lambda  مشخص می‌کنیم.

بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

The sorted list of tuples based on the second element is: [('date', 1), ('banana', 2), ('apple', 5), ('cherry', 8)]

در فهرست پایین روش کار کدهای جواب مسئله را نوشته‌ایم.

  1. ابتدا لیستی به نام data  ساخته‌ایم. این لیست، شامل چند تاپل مختلف است. عنصر اول هر تاپل نام میوه و عنصر دوم آن‌ها عدد صحیح است.
  2. در خط ۲، با استفاده از تابع sorted() این لیست را بر اساس عنصر دوم – عنصر با اندیس 1 - در هر تاپل مرتب کردیم.
  3. کلید مرتب‌سازی با کد «key=lambda item: item[1]» مشخص شده است. این کد، یعنی آن که مرتب‌سازی باید بر اساس دومین عنصر تاپل‌ها انجام شود.
  4. خروجی تابع sorted() در متغیر sorted_data  ذخیره می‌شود.
  5. در پایان با دستور print()، لیست sorted_data  نمایش داده می‌شود

ساخت تابع مرتبه بالاتر

در این سوال از ما خواسته شده است که تابعی به نام apply_operation()  تعریف کنیم. این تابع باید سه پارامتر ورودی دریافت کند. پارامتر اول با نام دلخواه func  خودش تابع است. پارامتر‌های x  و y  هم آرگومان‌های معمولی هستند. خروجی تابع apply_operation(func, x, y)  باید نتیجه اجرا یا فراخوانی تابع func(x, y)  باشد. در آخر هم باید کارکرد apply_operation(func, x, y) را با استفاده از توابع گوناگونی مانند جمع و تفریق و غیره نشان دهیم.

به عبارت ساده‌تر در این تمرین از ما خواسته شده است تا تابع مرتبه بالاتر ایجاد کنیم. تابع مرتبه بالاتر، تابعی است که به عنوان پارامتر ورودی از توابع دیگر استفاده می‌کند.

نکته: تابع apply_operation() به عنوان پارامتر اول تابع func  را دریافت می‌کند. سپس این تابع را با اعداد x  و y  - به عنوان پارامتر – فراخوانی می‌کند. برای تعریف این تابع می‌توانیم از هر تابع دیگری استفاده کنیم. حتی امکان استفاده از توابع تعریف شده توسط کاربر هم وجود دارد. فرقی نمی‌کند که این توابع با کلمه کلیدی def  تعریف شده‌اند یا از نوع دستورات lambda  هستند.

بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده می‌شود.

Result of addition: 8
Result of subtraction: 6
Result of multiplication: 12

در فهرست پایین روش کار کدهای جواب مسئله را نوشته‌ایم.

  1. ابتدا تابعی به نام apply_operation() تعریف کرده‌ایم. apply_operation() به عنوان پارامتر ورودی یک تابع و دو عدد دریافت می‌کند.
  2. در خط ۱۳، با استفاده از کد return func(x, y)  در خروجی، تابع func()  را بر روی پارامتر‌های دیگر اجرا کرده و نتیجه را برمی‌گرداند.
  3. سپس تابع معمولی به نام add  می‌سازیم. این تابع در خروجی حاصل جمع دو عدد را برمی‌گرداند.
  4. در خط‌های ۱۹ و ۲۰، تابع add  به apply_operation() داده شده و نتیجه جمع 3 و 5  برابر با 8 چاپ می‌شود.
  5. بعد از آن در خط ۲۳، تابع لامبدایی به نام subtract  تعریف می‌کنیم. این تابع هم حاصل تفریق دو عدد را برمی‌‌گرداند.
  6. از خط ۲۳ تا ۲۵، تابع subtract  به apply_operation() داده شده است. سپس نتیجه تفریق 10  و 4  را محاسبه می‌کند. در نتیجه عدد 6  در خروجی، چاپ می‌شود.
  7. در مرحله بعد هم تابع لامبدا دیگری به نام multiply  ساخته‌ایم. این تابع هم دو عدد را در یکدیگر ضرب کرده و نتیجه را برمی‌گرداند.
  8. تابع multiply  نیز به apply_operation() داده شده و نتیجه ضرب 2 و 6  برابر 12  چاپ می‌شود.
کامپیوتری که در میان چراغ‌های ال ای دی کوچک و روشن برنامه نویسی می‌کند.

جمع‌‌بندی

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

سپس به بررسی موضوعات متوسطی مانند شمارش حروف بزرگ و کوچک، بررسی اعداد اول و کامل، و ساخت لیستی از توان دوم عناصر پرداختیم. در سطوح پیشرفته‌تر، اجرای کدهای رشته‌ای، شمارش متغیرهای محلی، توابع بازگشتی برای فاکتوریل و کاربرد lambda  با filter()  و map() و sorted()  توضیح داده شده‌اند. در نهایت هم با کمک مثالی روش تعریف توابع مرتبه بالاتر را بررسی کردیم. این توابع نشان‌دهنده انعطاف‌پذیری پایتون در مدیریت عملیات پیچیده هستند.

source

توسط expressjs.ir