| کانال توسعه‌دهندگان پایتون |
7.59K subscribers
67 photos
3 videos
4 files
63 links
⭕️ کانال توسعه‌دهندگان پایتون دولوپیکس

💠 دولوپیکس | جامعه توسعه‌دهندگان ایرانی

💎 @Developix
🚀 Developix.ir

📌 پشتیبانی و تبلیغات:
@DevelopixSupport
Download Telegram
مدیریت درست resource مثل فایل، connection دیتابیس یا lock، کلی باگ و Memory Leak بالقوه را حذف می‌کند. پایتون برای این کار Context Manager دارد که با کلمهٔ کلیدی with استفاده می‌شود. 😌

ساده‌ترین مثال، کار با فایل است؛ بدون نیاز به close() یادت نرود:
with open("data.txt", "r", encoding="utf-8") as f:
content = f.read()

بعد از تمام شدن بلاک، فایل به‌صورت خودکار بسته می‌شود؛ حتی اگر exception رخ بدهد. 👌

برای resourceهای خودت هم می‌شود Context Manager ساخت. راحت‌ترین راه در پروژه‌های کوچیک، استفاده از contextlib.contextmanager است:
from contextlib import contextmanager

@contextmanager
def temp_change_dir(path):
import os
old = os.getcwd()
os.chdir(path)
try:
yield
finally:
os.chdir(old)

حالا هرجا لازم بود، فقط:
with temp_change_dir("/tmp"):
# کدهای وابسته به مسیر جدید
...

این الگو، کد را خواناتر، امن‌تر و تست‌پذیرتر می‌کند. دفعهٔ بعد که نیاز به setup/cleanup داشتی، به یک Context Manager کوچک فکر کن.

🔗 رفرنس: Python docs - contextlib

🔖 #Python #پایتون #Python #context_manager #with #contextlib #best_practices #resources

👤 Developix

💎 Channel: @DevelopixPython
👍3