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

توابع پایتون: مقدمه ای برای مبتدیان
توابع یک مفهوم اساسی در برنامه نویسی پایتون هستند که به سازماندهی بیشتر کد شما، قابل استفاده مجدد و درک آسانتر کمک می کنند. در این مقاله، ما اصول توابع پایتون، از جمله نحو، آرگومان ها، دامنه و موارد دیگر را بررسی خواهیم کرد. همچنین شما را با مفاهیم مفیدی مانند اعضای درجه یک، توابع درجه بالاتر و توابع داخلی مانند 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
می تواند کد شما را بیشتر تقویت کند. اکنون که درک خوبی از توابع پایتون دارید، پیش بروید و این دانش را برای نوشتن کدهای تمیز و قدرتمند در پروژه های پایتون خود به کار ببرید!
امیدوارم این راهنمای مبتدی برای توابع پایتون مفید بوده باشد. اگر سوال یا پیشنهادی دارید، در زیر نظر خود را با ما در میان بگذارید.