PyCoders (پایتون)
Open in Telegram
◇ #پایتون جادوگر دنیای برنامه نویسی! ◇ معرفی حوزه های کاری پایتون ◇ معرفی کتابخونه های کاربردی ◇ معرفی دوره های مفید ◇ معرفی تکنیک ها و نکات ◇ نقشه راه حوزه های مختلف ◇ اخبار و آپدیت های پایتون ◇ و هر چیزی در مورد پایتون! ■ گروه پایتون: @programmers_py
Show more4 106
Subscribers
No data24 hours
+57 days
No data30 days
Posts Archive
4 106
🔆 مدیریت حافظه با استفاده از Generator در پایتون
🔹 برای کار با لیستهای خیلی بزرگ، استفاده از لیستکامپرهنشن معمولی باعث میشه تمام دادهها همزمان توی رم بارگذاری بشن که اصلاً بهینه نیست. با تغییر پرانتزها به براکت، میتونی از جنریتور استفاده کنی تا دادهها فقط موقع نیاز تولید بشن و مصرف حافظه برنامه به شدت کاهش پیدا کنه.
# بد: مصرف حافظه بالا برای لیستهای حجیم
my_list = [x**2 for x in range(1000000)]
# خوب: مصرف حافظه ناچیز به صورت Lazy
my_gen = (x**2 for x in range(1000000))
🐍 @python_rd4 106
🔆بهینهسازی کوئری در جنگو
یکی از بزرگترین دلایل کند شدن پروژههای جنگویی، اجرای کوئریهای تکراری روی دیتابیسه که بهش چالش N+1 میگن. فرض کن میخوای لیست کتابها و نام نویسنده هر کتاب رو نمایش بدی. اگر کد رو اینطوری بنویسی، جنگو برای هر کتاب یه کوئری جداگانه به جدول نویسندهها میزنه:
books = Book.objects.all()
for book in books:
print(book.author.name) # اجرای یک کوئری اضافه به ازای هر کتاب!
برای حل این مشکل کافیه از select_related استفاده کنی تا جنگو با یک Joint ساده در دیتابیس، همه اطلاعات رو یکجا بکشه بیرون و سرعت لود صفحه رو چند برابر کنه:
books = Book.objects.select_related('author').all()
for book in books:
print(book.author.name) # بدون کوئری اضافه
همیشه قبل از دیپلوی کردن پروژه، تعداد کوئریهاتون رو با Django Debug Toolbar چک کنید تا سرور زیر بار نره.
🐍 @python_rd4 106
🔆کدنویسی تمیز:
خیلی وقتها برای فیلتر کردن یه لیست، ناخودآگاه میریم سراغ حلقههای تو در تو و کدهای طولانی. فرض کن یه لیست از کاربرها داری و فقط میخوای اونهایی که فعال هستن و سنشون بالای ۱۸ ساله رو جدا کنی. کد معمولی و شلوغ این شکلی میشه:
active_adults = []
for user in users:
if user['is_active'] == True:
if user['age'] > 18:
active_adults.append(user)
اما توی پایتون میشه همین کار رو خیلی تمیزتر، خواناتر و سریعتر با List Comprehension انجام داد:
active_adults = [u for u in users if u['is_active'] and u['age'] > 18]
با این ترفند ساده هم خوانایی کد بالا میره و هم تعداد خطوط کمتر میشه.
🐍 @python_rd4 106
🔆 الگوریتم Merge Sort
def merge_sort(arr, l, r):
if l < r:
mid = (l + r) // 2
merge_sort(arr, l, mid)
merge_sort(arr, mid + 1, r)
merge(arr, l, mid, r)
🐍 @python_rd4 106
🔆الگوریتم Bellman-Ford
🔹یافتن سریع ترین راه از نقطه A به H
def bellman_ford(nodes, edges, start, target):
dist = {n: float('inf') for n in nodes}
dist[start] = 0
for _ in range(len(nodes) - 1):
updated = False
for u, v, w in edges:
if dist[u] + w < dist[v]:
dist[v] = dist[u] + w
updated = True
if not updated: break
🐍 @python_rd4 106
🔆python list methods:
1. 🍔🍔🍟 .append(🍔) → 🍔🍔🍟🍔
2. 🍔🍔🍟 .count(🍔) → 2
3. 🍔🍔🍟 .copy() → 🍔🍔🍟
4. 🍔🍔🍟 .index(🍟) → 2
5. 🍔🍔🍟 .reverse() → 🍟🍔🍔
6. 🍔🍔🍟 .remove(🍟) → 🍔🍔
7. 🍔🍔🍟 insert( 1, 🥤) → 🍔🥤🍔🍟
8. 🍔🍔🍟 pop(1) → 🍔🍟
9. 🍔🍔🍟 pop() → 🍔🍔
🐍 @python_rd
4 106
🔆یه ترفند خیلی کاربردی برای دیباگ کردن در پایتون، استفاده از icecream به جای پرینتهای سادهست. به جای اینکه هی بنویسی print(f'x: {x}') و سعی کنی بفهمی چی به چیه، کافیه کتابخونهش رو نصب کنی و از ic() استفاده کنی. این ابزار خودش اسم متغیر، مقدارش و حتی شماره خطی که توش اجرا شده رو خیلی تمیز و رنگی چاپ میکنه. علاوه بر این، چون خودش مقدار رو برمیگردونه، میتونی مستقیم وسط کد (حتی داخل return یا شرطها) بدون اینکه منطق کد رو بهم بزنی ازش استفاده کنی و با حذف کردنش، کدهات تمیز باقی میمونن.
مثال:
from icecream import ic
def add(x, y):
return x + y
# به جای این:
# print(f"DEBUG: add(1, 2) = {add(1, 2)}")
# از این استفاده کن:
ic(add(1, 2))
🐍 @python_rd4 106
🔆خروجی کد چیه؟
numbers = [2, 4, 6, 8]
result = []
for n in numbers:
if n == 4 or 10:
result.append(n)
print(result)
A) [4]
B) [2, 4, 6, 8]
C) [2, 4]
D) [4, 6, 8]
🐍@python_rd4 106
🔆بهینهسازی مصرف RAM با slots
🔸بهصورت پیشفرض هر آبجکت پایتون یه دیکشنری داخلی داره که کلی جا میگیره.
اگه تعداد آبجکتها زیاد باشه، مصرف رم میره هوا.
اینجا
__slots__ به کارت میاد.
با تعریف اسلاتس، پایتون به کلاس میگه دقیقاً چه attribute هایی داری،
در نتیجه دیگه واسه هر شیء دیکشنری نمیسازه و مصرف حافظه تا حد زیادی کم میشه.
class User:
__slots__ = ("name", "age")
def __init__(self, name, age):
self.name = name
self.age = age
این تکنیک مخصوص وقتاییه که با هزاران آبجکت طرفی و پرفورمنس برات مهمه.
🐍 @python_rd4 106
🔆کوتاه نویسی با پایتون:
Walrus Operator (:=)
🔸از نسخه ۳.۸ به بعد یه ابزار جدید به پایتون اضافه شد به اسم Walrus Operator.
باهاش میتونی همزمان *یه مقدار رو ذخیره کنی* و *از همون مقدار داخل شرط استفاده کنی*.
یعنی هم کدت کوتاهتر میشه، هم تمیزتر.
مثال ساده:
if (name := input("Name: ")):
print("Hello", name)
بدون walrus مجبور بودی اول name رو بگیری، بعد توی if چکش کنی.
اینجا همهچی یکجا و شیک انجام میشه. این قابلیت توی حلقهها واقعاً مفیده.
🐍 @python_rd4 106
سلام بچه ها، حالتون چطوره؟
یکم از خودتون بگید، صحبت کنیم،
الان چیکار میکنید؟
چه مباحثی از پایتون رو کار کردید؟
تو چه مرحله ای هستید؟
به درآمد رسیدید یا هنوز تو مراحل یادگیری هستید؟
4 106
🚨 آخرین فرصت ثبتنام با تخفیف ویژه | دوره فرانتاند (مقدماتی)
با عرض سلام و تسلیت خدمت همهی دوستان بابت اتفاقات چند هفته اخیر 🖤 و آرزوی سلامتی برای همه شما و بهتر شدن حال هممون 💚
بهدلیل شرایط اخیر و اختلالهای اینترنت،
📅 شروع دوره به پنجشنبه ۲۳ بهمن منتقل شد.
همچنین با توجه به شرایط اقتصادی سخت این روزها تسهیلات ویژه ای هم در نظر گرفتیم برای شما 🤍 که امیدواریم بتونیم کمی کمک حال شما باشیم.
⏳ ثبتنام در حال تکمیل شدنه و
👉 فقط چند ظرفیت باقی مونده
🔥 تخفیف محدود و زماندار:
💸 تخفیف ویژه فقط تا امشب، ساعت ۲۴ چهارشنبه ۲۲ بهمن ماه
💳 امکان پرداخت اقساطی
📌 امکانات دوره:
- آموزش اصولی مبانی فرانتاند (HTML، CSS، JavaScript)
- پروژه واقعی + تمرین عملی
- منتورینگ فردی (۱ ساعت برای هر نفر در هفته)
- شبیهسازی مصاحبه
- استفاده حرفهای از هوش مصنوعی (AI & LLMs)
- امکان همکاری در پروژهها و دورههای آینده برای افراد برتر
📩 برای پرسش سوالات، ثبتنام و استفاده از تخفیف:
👉 تلگرام:
@hamedkhanaki_dev
🌐 اطلاعات کامل دوره:
learnwithhamed.vercel.app
4 106
🔸 ترفندهای پایتون
🔅نکته DataClass برای کلاسهای تمیز
دیگه نیازی نیست init و repr بنویسی؛ خودش میسازه.
from dataclasses import dataclass
@dataclass
class User:
name: str
age: int
✔️ 70٪ کد کمتر
✔️ خوانایی بیشتر
🐍 @python_rd4 106
🔅 اندازه فایل یا فولدر رو با پایتون بگیر
import os
print(os.path.getsize("file.txt"), "bytes")
🐍 @python_rd4 106
🔸 ترفندهای پایتون
🔅بعد از try از else و finally غافل نشو
کد تمیزتر و منطقیتر:
try:
x = 10 / num
except ZeroDivisionError:
print("Cannot divide by zero!")
else:
print("No error, result:", x)
finally:
print("Finished")
✔️ در واقع else فقط وقتی اجرا میشود که ارور نباشد
✔️ اما finally همیشه اجرا میشود
🐍 @python_rd4 106
🔸 ترفندهای پایتون
🔅مدیریت state در async با ContextVar
در FastAPI و برنامههای async خیلی کاربردیه.
from contextvars import ContextVar
request_id = ContextVar("request_id", default=None)
✔️ نگهداشتن state بدون مشکلات همزمانی
🐍 @python_rd4 106
🔸 مسیر Machine Learning با پایتون
🤖 رودمپ یادگیری ماشین با پایتون
1) پایتون علمی
NumPy، Pandas، Matplotlib، Scikit-learn.
2) ریاضیات لازم
مشتق، ماتریس، وکتور، جبرخطی، آمار.
3) الگوریتمهای ML
Regression، SVM، Decision Tree، RandomForest، KMeans.
4) مدلسازی و ارزیابی
Train/Test، Cross Validation، Metrics مثل F1، ROC.
5) یادگیری عمیق
PyTorch یا TensorFlow → CNN، RNN، Transformers.
6) و MLOps ساده
Model Serving، FastAPI، Docker.
7) مهندسی داده مقدماتی
ETL، Pipelines، Feature Store.
8) پروژهها
طبقهبندی تصاویر، تحلیل متن، پیشبینی سری زمانی.
🐍 @python_rd
4 106
🔅 کد دانلود صفحه وب
import requests
url = "https://example.com"
response = requests.get(url)
print(response.text[:500]) # نمایش 500 کاراکتر اول
📌 کاربرد: Scraping / گرفتن HTML یک سایت
🐍 @python_rd