🐞 دیباگ سریع با تابع داخلی
وقتی یک باگ سمج وسط کد ظاهر میشود، بهجای پرینت گرفتنهای پشتسرهم، استفاده از
کافی است هرجا نیاز به توقف و بررسی وضعیت متغیرها بود، یک
داخل debugger میشود متغیرها را چاپ کرد، روی کد قدمبهقدم رفت، و سریع منطق مشکلدار را پیدا کرد. بعد از رفع مشکل، فقط همان خط
🔗 مرجع رسمی Python: docs.python.org
🔖 #Python #پایتون #Python #debugging #breakpoint #pdb #best_practices
👤 Developix
💎 Channel: @DevelopixPython
breakpoint()وقتی یک باگ سمج وسط کد ظاهر میشود، بهجای پرینت گرفتنهای پشتسرهم، استفاده از
breakpoint() خیلی تمیزتر و سریعتر است. از Python 3.7 به بعد این تابع داخل خود زبان هست و نیازی به import جداگانه ندارد.کافی است هرجا نیاز به توقف و بررسی وضعیت متغیرها بود، یک
breakpoint() بگذارید تا برنامه همانجا متوقف شود و وارد interactive debugger (پیشفرض: pdb) شوید.def process_items(items):
total = 0
for i, item in enumerate(items):
if item < 0:
breakpoint() # اینجا وضعیت را چک کن
total += item
return total
result = process_items([1, 2, -3, 4])
print(result)
داخل debugger میشود متغیرها را چاپ کرد، روی کد قدمبهقدم رفت، و سریع منطق مشکلدار را پیدا کرد. بعد از رفع مشکل، فقط همان خط
breakpoint() را حذف یا comment کن.🔗 مرجع رسمی Python: docs.python.org
🔖 #Python #پایتون #Python #debugging #breakpoint #pdb #best_practices
👤 Developix
💎 Channel: @DevelopixPython
❤6👍1
💠 نسخه جدید کتابخانه FastAPI منتشر شده است
🔸 ارتقا از نسخه 0.140.13 به 0.141.0
🔹 لیست تغییرات این نسخه:
- ✨ افزودن
- و بهبودهای جزئی دیگر، و غیره
🔖 #fastapi, #python, #release
💎 @DevelopixPython
🔸 ارتقا از نسخه 0.140.13 به 0.141.0
🔹 لیست تغییرات این نسخه:
- ✨ افزودن
app.frontend(check_dir="auto") برای توسعهٔ سادهتر با fastapi dev- و بهبودهای جزئی دیگر، و غیره
🔖 #fastapi, #python, #release
💎 @DevelopixPython
💠 نسخه جدید فریمورک جنگو (Django) منتشر شده است
🔸 ارتقا از نسخه 6.0.8 به 6.1.0
🔹 لیست تغییرات این نسخه:
- رفع باگ امنیتی شدید در lookupهای مکانی
- جلوگیری از DoS در check_for_language
- محدود کردن عمق مجموعههای هندسی تودرتو
- ایمنسازی لینکهای URLField در ادمین
- رفع کرش bulk_create روی برخی دیتابیسها
- بهروزرسانی سازگاری با sqlparse 0.5.5 و موارد دیگر
🔖 #django, #python, #release
💎 @DevelopixPython
🔸 ارتقا از نسخه 6.0.8 به 6.1.0
🔹 لیست تغییرات این نسخه:
- رفع باگ امنیتی شدید در lookupهای مکانی
- جلوگیری از DoS در check_for_language
- محدود کردن عمق مجموعههای هندسی تودرتو
- ایمنسازی لینکهای URLField در ادمین
- رفع کرش bulk_create روی برخی دیتابیسها
- بهروزرسانی سازگاری با sqlparse 0.5.5 و موارد دیگر
🔖 #django, #python, #release
💎 @DevelopixPython
👍2
مدیریت درست 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
🔥 پروژه: DSPy فریمورک برنامهنویسی LLM
DSPy یه فریمورک پایتونی از آزمایشگاه NLP استنفورده که کمک میکند با LLMها برنامهنویسی کنی، نه Prompt نویسی دستی 🤖
بهجای حفظ Promptها، ماژولهای سطحبالا تعریف میکنی (مثلاً برای Question Answering، RAG یا Summarization) و DSPy خودش Prompt و Hyperparameterها را روی دادهات Optimize میکند.
برای ساخت Pipelineهای پایدار روی GPT و مدلهای متنباز، گزینهٔ خیلی جدیایه. سورسکد و مثالها:
DSPy در گیتهاب
⭐️ 519 stars this week
🔖 #Python #پایتون #پایتون #یادگیری_ماشین #پردازش_زبان_طبیعی
DSPy یه فریمورک پایتونی از آزمایشگاه NLP استنفورده که کمک میکند با LLMها برنامهنویسی کنی، نه Prompt نویسی دستی 🤖
بهجای حفظ Promptها، ماژولهای سطحبالا تعریف میکنی (مثلاً برای Question Answering، RAG یا Summarization) و DSPy خودش Prompt و Hyperparameterها را روی دادهات Optimize میکند.
برای ساخت Pipelineهای پایدار روی GPT و مدلهای متنباز، گزینهٔ خیلی جدیایه. سورسکد و مثالها:
DSPy در گیتهاب
⭐️ 519 stars this week
🔖 #Python #پایتون #پایتون #یادگیری_ماشین #پردازش_زبان_طبیعی