جنگولرن
3.78K subscribers
287 photos
74 videos
31 files
555 links
آموزش Django و بستگان
Download Telegram
💎 ـPartial Functions در پایتون 💎

تا حالا شده یه تابع بنویسی که پر از آرگومان باشه و همیشه بخوای یه سری از اون آرگومان‌ها مقدار ثابتی داشته باشن؟ مثلا فرض کن توی یه پروژه مدام داری درخواست HTTP می‌فرستی و همیشه متد رو روی POST می‌ذاری. به جای تکرار این مقدار ثابت، Partial Functions به کمکت میان و کدتو خیلی حرفه‌ای‌تر می‌کنن.


🔎 ـPartial Functions چی هست؟

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

🧠 چرا Partial Functions مفیدن؟

سادگی و تمیزی کد: به
جای تکرار، یه بار آرگومان ثابت رو تعریف می‌کنی.


کاهش خطا:
آرگومان‌های ثابت توی یه جای مشخص مقداردهی می‌شن.



ایجاد نسخه‌های شخصی‌سازی‌شده از توابع:
بدون نیاز به تعریف تابع جدید.



🛠️ چطور Partial Functions بسازیم؟
from functools import partial  

def multiply(x, y):
return x * y

double = partial(multiply, y=2)
print(double(5)) # خروجی: 10



اینجا double نسخه‌ای از multiply شده که مقدار y همیشه 2 هست. فقط لازمه x رو بهش بدی.

🚀 کاربردهای Partial Functions

1⃣ ساده‌سازی توابع با آرگومان‌های زیاد
وقتی توابع زیادی با پارامترهای تکراری داری، Partial Functions می‌تونه کمکت کنه:

def send_request(method, url, headers, data):  
# ارسال درخواست
pass

post_request = partial(send_request, method='POST')
post_request(url='/api/data', headers={}, data={})

2⃣ انعطاف بیشتر با توابع دیگر
ـPartial Functions می‌تونه با توابعی مثل map و filter خیلی خوب کار کنه:

from functools import partial  

def power(base, exponent):
return base ** exponent

square = partial(power, exponent=2)

numbers = [1, 2, 3, 4]
squared_numbers = list(map(square, numbers))
print(squared_numbers) # خروجی: [1, 4, 9, 16]

3⃣ بهبود خوانایی کد در سیستم‌های بزرگ

وقتی پروژه‌هات پیچیده می‌شن، Partial Functions بهت کمک می‌کنن توابعی بسازی که واضح‌ترن:
from functools import partial  

def logger(log_level, message):
print(f"[{log_level}] {message}")

info_logger = partial(logger, log_level='INFO')
info_logger("This is an info message") # خروجی: [INFO] This is an info message

⚖️ مقایسه با دیگر روش‌ها
ـPartial Functions یه جایگزین سبک‌تر برای تعریف کلاس‌های خاص یا توابع جدیده. اما وقتی منطق خیلی پیچیده‌ای داری یا نیاز به شرط‌های مختلف هست، بهتره به جای Partial Functions از کلاس‌ها یا Wrapper Functions استفاده کنی.


✍️ جمع‌بندی
فهمیدیم Partial Functions ابزاری ساده اما قدرتمند در پایتون هستن که می‌تونن کدهای تکراری رو حذف کنن و انعطاف بالایی بهت بدن.

امید وارم مفید بوده باشه :)

#python #programing


🔆 CHANNEL | GROUP
👍13👏2🤮21