مدیریت درست resource مثل فایل، connection دیتابیس یا lock، کلی باگ و Memory Leak بالقوه را حذف میکند. پایتون برای این کار Context Manager دارد که با کلمهٔ کلیدی
سادهترین مثال، کار با فایل است؛ بدون نیاز به
بعد از تمام شدن بلاک، فایل بهصورت خودکار بسته میشود؛ حتی اگر exception رخ بدهد. 👌
برای resourceهای خودت هم میشود Context Manager ساخت. راحتترین راه در پروژههای کوچیک، استفاده از
حالا هرجا لازم بود، فقط:
این الگو، کد را خواناتر، امنتر و تستپذیرتر میکند. دفعهٔ بعد که نیاز به setup/cleanup داشتی، به یک Context Manager کوچک فکر کن. ✨
🔗 رفرنس: Python docs - contextlib
🔖 #Python #پایتون #Python #context_manager #with #contextlib #best_practices #resources
👤 Developix
💎 Channel: @DevelopixPython
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