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

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

💎 @Developix
🚀 Developix.ir

📌 پشتیبانی و تبلیغات:
@DevelopixSupport
Download Telegram
✅ شرط‌های تمیزتر در Python با any و all 🧠

خیلی وقت‌ها توی if ها چند شرط پشت‌سرهم با and و or می‌نویسیم و کد شلوغ می‌شود. دو تابع ساده و خیلی Pythonic برای تمیز کردن این شرط‌ها داریم: any و all.

ایده اصلی:
- any(iterable) اگر حداقل یک مقدار True باشد، True برمی‌گرداند.
- all(iterable) فقط وقتی همه مقادیر True باشند، True برمی‌گرداند.

یک مثال واقعی: اعتبارسنجی ورودی کاربر 👇

def is_valid_user(data: dict) -> bool:
required_keys = ["username", "email", "password"]

# همه فیلدها باید وجود داشته باشند و خالی نباشند
return all(
key in data and isinstance(data[key], str) and data[key].strip()
for key in required_keys
)

user = {"username": "ali", "email": "", "password": "123"}
print(is_valid_user(user)) # False


به‌جای چند if تو در تو، با یک all هم خوانایی بهتر می‌شود هم خطاهای منطقی کمتر می‌شود. برای چک کردن اینکه «حداقل یکی» برقرار باشد، از any استفاده می‌شود.

مرجع: Python docs - any & all

امتحان استفاده از any و all در شرط‌های قدیمی کد، کدبیس را تمیزتر و قابل‌درک‌تر می‌کند. 😉

🔖 #Python #پایتون #Python #any #all #conditions #clean_code #validation #tips

👤 Developix

💎 Channel: @DevelopixPython
👍3❤1
جنگو (Django): فریم‌ورک وب فول‌استک برای پایتون 🚀

اگر دنبال ساخت وب‌اپلیکیشن جدی با Python هستی، Django یکی از جدی‌ترین گزینه‌هاست. جنگو بهت کمک می‌کند خیلی سریع از ایده برسی به محصول قابل‌استفاده، بدون این‌که چرخ را از نو اختراع کنی.

چرا Django؟
• ORM قدرتمند برای کار با دیتابیس بدون نوشتن مستقیم SQL
• پنل ادمین آماده برای مدیریت دیتا 💻
• سیستم auth داخلی (کاربر، لاگین، permission)
• ساختار استاندارد و opinionated برای پروژه‌های بزرگ
• جامعه کاربری بزرگ و داکیومنتیشن عالی

نصب و شروع سریع
pip install django

django-admin startproject mysite
cd mysite
python manage.py startapp blog
python manage.py runserver


برای وب‌اپلیکیشن‌های شرکتی، پنل ادمین داخلی جنگو زمان توسعه را به‌شدت کم می‌کند؛ مخصوصاً وقتی CRUD زیاد داری و نمی‌خواهی برای هر چیز یک صفحه custom بنویسی.

مستندات رسمی:
docs.djangoproject.com
سورس‌کد:
github.com/django/django

با یک پروژه کوچک شروع کن؛ مثلاً یک وبلاگ ساده یا داشبورد ادمین، و کم‌کم سراغ featureهای جدی‌تر برو. 😎

🔖 #Python #پایتون #Python #Django #Web #Backend #ORM #Admin

👤 Developix

💎 Channel: @DevelopixPython
❤2👍2
خروجی اجرای این کد در Python چیست؟

به رفتار تابع sorted با پارامتر key و پایداری (stability) مرتب‌سازی دقت کنید.

data = [3, 1, 2, 1]

calls = []

def key_fn(x):
calls.append(x)
return 0

result = sorted(data, key=key_fn)

print("calls:", calls)
print("result:", result)


خروجی دقیق این برنامه چیست؟

🔖 #Python #پایتون

👤 Developix

💎 Channel: @DevelopixPython
❤2
Pandas یکی از مهم‌ترین ابزارهای Python برای کار جدی با داده‌ است؛ مخصوصاً وقتی با فایل‌های CSV، Excel، دیتابیس‌ها یا دیتاهای جدولی سروکار داری 📊

با Pandas می‌توانی:
• دیتاست‌های بزرگ را سریع فیلتر و مرتب کنی
• ستون‌ها را اضافه/حذف و تبدیل نوع انجام بدهی
• روی گروه‌ها آمار بگیری (groupby)
• به‌راحتی با NumPy و ابزارهای ML مثل scikit-learn ترکیبش کنی

نمونه استفادهٔ ساده:
pip install pandas

import pandas as pd

# خواندن فایل CSV
df = pd.read_csv("data.csv")

# انتخاب سطرهایی که مقدار ستون "age" >= 18 است
adults = df[df["age"] >= 18]

# میانگین سن
mean_age = adults["age"].mean()
print(mean_age)


برای تحلیل لاگ‌ها، دیتای مالی، گزارش‌های سیستمی یا آماده‌سازی دیتا برای مدل‌های ML، Pandas معمولاً اولین انتخاب است.

مستندات رسمی:
Docs
GitHub

امتحانش کن روی یک CSV واقعی از پروژه‌ات و کم‌کم دیتای خام را به insight تبدیل کن 🔍

🔖 #Python #پایتون #Python #Pandas #Data_Analysis #DataFrame #تحلیل_داده #پایتون

👤 Developix

💎 Channel: @DevelopixPython
❤9
💠 نسخه جدید کتابخانه آیوگرام (Aiogram) منتشر شده است

🔸 ارتقا از نسخه 3.28.2 به 3.29.0

🔖 #Aiogram, #bot, #python, #release

💎 @DevelopixPython
🔥3
💠 نسخه جدید کتابخانه FastAPI منتشر شده است

🔸 ارتقا از نسخه 0.136.3 به 0.137.0

🔹 لیست تغییرات این نسخه:
- تغییر داخلیِ سازگارکننده APIRouter/APIRoute برای حفظ نمونه‌ها
- امکان افزودن روت‌ها پس از include_router بدون کپی شدن مسیرها
- پشتیبانی مقدماتی از APIRouter/APIRoute سفارشی (ویژگی آزمایشی)
- به‌روزرسانی مستندات و راهنمای استقرار FastAPI Cloud
- به‌روزرسانی ترجمه‌های مستندات به چندین زبان
- به‌روزرسانی وابستگی‌ها، حامیان و تنظیمات داخلی و غیره

🔖 #fastapi, #python, #release

💎 @DevelopixPython
❤3👍2
💠 نسخه جدید کتابخانه FastAPI منتشر شده است

🔸 ارتقا از نسخه 0.137.2 به 0.138.0

🔹 لیست تغییرات این نسخه:
- افزودن پشتیبانی از app.frontend() و router.frontend()
- به‌روزرسانی و بهبود مستندات (تایپو، لینک‌ها و دستورالعمل‌ها)
- فعال شدن ترجمه مستندات به زبان هندی
- بهبود تست‌ها و پایدارسازی فرایند انتشار، و غیره

🔖 #fastapi, #python, #release

💎 @DevelopixPython
👍2
در کد اول، برای پردازش یک فایل بزرگ کل محتوا با read().splitlines() یک‌باره در مموری لود شده است. این کار هم ریسک Memory Error را بالا می‌برد و هم برای فایل‌های خیلی بزرگ باعث افت شدید کارایی می‌شود. در کد دوم با استفاده از یک generator و iteration تنبل (lazy) هر خط به‌صورت stream خوانده می‌شود و فقط همان لحظه در مموری قرار می‌گیرد.

در مثال بالا به جای بارگذاری یک‌جای کل فایل، می‌توانید با الگوی generator و حلقه روی file object، مصرف مموری را به‌صورت چشم‌گیر کاهش دهید و در سناریوهای پردازش فایل‌های چندصد مگابایتی یا لاگ‌فایل‌های بسیار بزرگ، هم مقیاس‌پذیری برنامه را بهتر کنید و هم سرعت شروع پردازش را افزایش دهید.

اگر در پروژه‌های Python با داده‌های حجیم (مثلاً log processing، ETL ساده یا پردازش دیتاهای متنی) سروکار دارید، استفاده از این الگو به‌جای روش eager loading می‌تواند تفاوت جدی در performance و پایداری برنامه‌تان ایجاد کند.

🔖 #Python #پایتون

👤 Developix

💎 Channel: @DevelopixPython
❤5👍4🔥1
💠 نسخه جدید کتابخانه FastAPI منتشر شده است

🔸 ارتقا از نسخه 0.138.1 به 0.139.0

🔹 لیست تغییرات این نسخه:
- پشتیبانی از dependencies در app.frontend()
- به‌روزرسانی ترجمه‌های چندزبانه مستندات
- به‌روزرسانی فهرست متخصصان و مشارکت‌کنندگان FastAPI
- بهبود تنظیمات مخزن‌ها و موضوعات GitHub
- به‌روزرسانی وابستگی‌ها و GitHub Actions
- سایر ریزبهبودهای داخلی و ترجمه‌ها و غیره

🔖 #fastapi, #python, #release

💎 @DevelopixPython
👍3
چرا متود copy همیشه کپی واقعی نمی‌سازه؟

یکی از باگ‌هایی که حتی برنامه‌نویس‌های با تجربه هم گاهی باهاش روبه‌رو میشن، تفاوت بین Copy و Deep Copy هست

فرض کنید این لیست رو داریم:

data = [
["Yasin", "Ali"],
["Math", "Science"]
]

حالا ازش کپی می‌گیریم:

new_data = data.copy()

خیلی‌ها فکر می‌کنن new_data کاملاً مستقل از data شده اما اینطور نیست

اگر این کار رو انجام بدیم:

new_data[0].append("Sina")

نتیجه:

print(data)

# خروجی 👇🏻
# [['Yasin', 'Ali', 'Sina'], ['Math', 'Science']]

چرا لیست اصلی هم تغییر کرد؟

چون copy() فقط لیست بیرونی رو کپی می‌کنه، ولی عناصر داخلش همچنان به همون آبجکت‌های قبلی اشاره می‌کنن.

به این میگن Shallow Copy

-——————————————--

🎈اما راه حل؟

وقتی ساختارهای تو در تو دارید با از از deepcopy استفاده کنید

from copy import deepcopy

new_data = deepcopy(data)

حالا هر تغییری روی new_data بدید روی data اثری نداره

🔴 نکته مهم 🔴

اگر داده‌های شما تو در تو نیستند، copy کاملاً کافی و سریع‌تره

اما اگر با لیست، دیکشنری یا آبجکت‌های تو در تو کار می‌کنید استفاده اشتباه از copy می‌تونه باگ‌ ایجاد کنه که وقتتون گرفته بشه

🔖 #Python #پایتون

👤 BʟᴀᴄᴋCᴀᴛ

💎 Channel: @DevelopixPython
👍9❤3🔥2