برنامه نویسی

همه چیز در مورد توابع پایتون!

توابع پایتون: مقدمه ای برای مبتدیان

توابع یک مفهوم اساسی در برنامه نویسی پایتون هستند که به سازماندهی بیشتر کد شما، قابل استفاده مجدد و درک آسانتر کمک می کنند. در این مقاله، ما اصول توابع پایتون، از جمله نحو، آرگومان ها، دامنه و موارد دیگر را بررسی خواهیم کرد. همچنین شما را با مفاهیم مفیدی مانند اعضای درجه یک، توابع درجه بالاتر و توابع داخلی مانند map، lambda، و filter. بیایید وارد شوید و قدم به قدم با توابع پایتون آشنا شویم!

توابع چیست؟

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

نحو تابع پایتون

برای تعریف یک تابع در پایتون، باید یک سینتکس خاص را دنبال کنید:

def function_name(arguments):
    # Code block
    # Perform actions
    # Return a value (optional)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بیایید بخش های مختلف این نحو را تجزیه کنیم:

  • def: این کلمه کلیدی شروع یک تعریف تابع را نشان می دهد.
  • function_name: یک نام معنی دار برای تابع خود انتخاب کنید که نشان دهنده هدف آن باشد. برای نام های چند کلمه ای باید با حروف کوچک و زیرخط نوشته شود.
  • arguments: اینها مقادیری هستند که می توانید برای انجام عملیات خاص به یک تابع منتقل کنید.
  • :: یک دونقطه پایان اعلان تابع و شروع بلوک کد را نشان می دهد.
  • بلوک کد: این بخش تورفتگی حاوی دستورالعمل ها و اقدامات واقعی انجام شده توسط تابع است.
  • return (اختیاری): اگر می خواهید تابع شما نتیجه ای ارائه دهد، می توانید از آن استفاده کنید return کلمه کلیدی به دنبال آن مقدار مورد نظر. اگر شما را حذف کنید return بیانیه، تابع باز خواهد گشت None به صورت پیش فرض.

رشته Doc

برای ارائه یک رشته مستندات (docstring) برای یک تابع در پایتون، می‌توانید بلافاصله پس از اعلان تابع، یک نظر چند خطی اضافه کنید. رشته docstring به عنوان توصیفی از هدف، آرگومان ها و رفتار مورد انتظار تابع عمل می کند. در اینجا یک مثال است:

def greet(name):
    """
    Greets a person by printing a welcome message.

    Parameters:
    name (str): The name of the person to greet.
    """
    print(f"Hello, {name}!")

greet("Alice")
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در مثال بالا، رشته doc در داخل گیومه های سه گانه محصور شده است (""") یعنی رشته چند خطی. توضیح واضحی از هدف ارائه می دهد greet تابع و پارامتر آن را شرح می دهد:

  • name (str): نام شخص مورد سلام.

گنجاندن رشته‌های اسناد در توابع شما عمل خوبی است زیرا به توسعه‌دهندگان دیگر کمک می‌کند تا نحوه استفاده صحیح از عملکرد شما را درک کنند و استفاده از کدهای خود-مستند شونده را تشویق می‌کند. شما می توانید با استفاده از __doc__ ویژگی، مانند:

print(greet.__doc__)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

خروجی:

Greets a person by printing a welcome message.

Parameters:
name (str): The name of the person to greet.
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نکته

  • اگر تا اینجا پیش رفته اید، به این معنی است که واقعاً می خواهید در مورد توابع بیاموزید، بنابراین در اینجا یک نکته وجود دارد، من معتقدم تجسم برنامه نویسی را بسیار آسان و سرگرم کننده می کند!

مدرس پایتون

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

آرگومان های تابع پایتون

استدلال های موضعی

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

def greet(name, age):
    print(f"Hello, {name}! You are {age} years old.")

greet("Alice", 25)  # Output: Hello, Alice! You are 25 years old.
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

آرگومان های پیش فرض

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

def greet(name, age=30):
    print(f"Hello, {name}! You are {age} years old.")

greet("Bob")  # Output: Hello, Bob! You are 30 years old.
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

آرگومان های کلیدواژه

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

def greet(name, age):
    print(f"Hello, {name}! You are {age} years old.")

greet(age=35, name="Charlie")  # Output: Hello, Charlie! You are 35 years old.
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

*آرگس و **کوارگ

در برخی موارد، ممکن است تعداد دقیق آرگومان هایی را که می خواهید به یک تابع منتقل کنید، ندانید. پایتون دو سینتکس ویژه برای مدیریت چنین موقعیت هایی ارائه می دهد:

  • *args آرگومان های موقعیتی را به صورت یک تاپل نشان می دهد و به شما امکان می دهد تعداد متغیری از آرگومان ها را ارسال کنید.
  • `**

kwargs` مخفف کلمات کلیدی آرگومان به عنوان یک فرهنگ لغت است که به شما امکان می دهد تعداد متغیری از آرگومان های کلیدواژه را ارسال کنید.

این ویژگی ها زمانی که می خواهید با تعداد نامعلومی از ورودی ها کار کنید، انعطاف پذیری را فراهم می کند. در اینجا یک مثال است:

def multiply(*args):
    result = 1
    for num in args:
        result *= num
    return result

print(multiply(2, 3, 4))  # Output: 24

def greet(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

greet(name="Alice", age=25)  # Output: name: Alice, age: 25
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اعضای درجه یک و توابع درجه بالاتر

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

def greet():
    print("Hello!")

def run_function(func):
    func()

run_function(greet)  # Output: Hello!
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

دامنه عملکرد محلی و جهانی

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

در اینجا یک مثال است که دامنه محلی و جهانی را نشان می دهد:

x = 10  # Global variable

def print_number():
    y = 5  # Local variable
    print(x + y)

print_number()  # Output: 15
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در مثال بالا، x یک متغیر جهانی است که در داخل قابل دسترسی است print_number عملکرد، در حالی که y یک متغیر محلی است که فقط در داخل تابع قابل دسترسی است.

کلمه کلیدی جهانی

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

x = 10  # Global variable

def modify_global():
    global x  # Declare x as a global variable
    x += 5

modify_global()
print(x)  # Output: 15
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

با استفاده از global کلمه کلیدی، modify_global تابع قادر به دسترسی و تغییر مقدار متغیر جهانی است x.

طول عمر یک تابع

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

امتیاز: نقشه، لامبدا، و توابع فیلتر

پایتون چندین توابع داخلی در مرتبه بالاتر ارائه می دهد که می تواند کد شما را ساده کند. سه مورد مفید را به طور خلاصه معرفی می کنیم: map، lambda، و filter.

نقشه

را map تابع یک تابع معین را برای هر عنصر تکرارپذیر اعمال می کند و یک تکرار کننده جدید حاوی نتایج را برمی گرداند. این تابع به شما اجازه می دهد تا عملیات مشابهی را روی چندین عنصر به طور همزمان انجام دهید. در اینجا یک مثال با استفاده از map برای محاسبه مربع های یک لیست از اعداد:

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

squared_numbers = map(lambda x: x ** 2, numbers)
print(list(squared_numbers))  # Output: [1, 4, 9, 16, 25]
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

لامبدا

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

add = lambda x, y: x + y
print(add(2, 3))  # Output: 5
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

فیلتر

را filter تابع یک تکرار کننده از عناصر یک تکرارپذیر ایجاد می کند که تابع ارائه شده برای آن برمی گردد True. این به طور موثر عناصری را که شرایط مشخصی را برآورده نمی کنند، فیلتر می کند. در اینجا مثالی برای فیلتر کردن اعداد زوج آمده است:

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

even_numbers = filter(lambda x: x % 2 == 0, numbers)
print(list(even_numbers))  # Output: [2, 4]
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نتیجه

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

برنامه نویسی کنید و نقش مهمی در ساختار کد شما ایفا کنید. با درک نحو، آرگومان ها، دامنه و طول عمر آنها، می توانید کد خود را ماژولارتر، قابل استفاده مجدد و کارآمدتر کنید. علاوه بر این، مفاهیم اعضای درجه یک، توابع درجه بالاتر و توابع داخلی مانند map، lambda، و filter می تواند کد شما را بیشتر تقویت کند. اکنون که درک خوبی از توابع پایتون دارید، پیش بروید و این دانش را برای نوشتن کدهای تمیز و قدرتمند در پروژه های پایتون خود به کار ببرید!

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

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا