🔥1
PyCoders (پایتون)
🔆 تست! 🔸 خروجی چیه؟ x = 256 y = 256 print(x is y) m = 257 n = 257 print(m is n) 🐍 @pyrhon_rd
میبینم که پستای کانالو مطالعه نمیکنین
PyCoders (پایتون)
🔆 اعدادی که تو پایتون هیچوقت پاک نمیشن! 🔹 میدونستی پایتون یه کلوپ اختصاصی برای اعدادی داره که هیچوقت از حافظه RAM پاک نمیشن؟ 🔹تو پایتون، تکنیکی به نام Integer Caching یا Small Integer Optimization وجود داره. 🔹 یعنی چی؟ وقتی پایتون بالا میاد، اعدادی…
این پستو مطالعه کنید و دوباره به تست جواب بدید
🔆 چطوری مثل یه پایتونکار حرفهای کد بزنم؟
🔹 خیلی وقتها میخوایم مقداری رو از یک دیکشنری بگیریم، اما اگه کلید وجود نداشته باشه برنامهمون با KeyError کرش میکنه.
❌ روش مبتدی:
❌ روش مبتدی دیگه:
✅ روش حرفهای:
🔹 چرا این روش عالیه؟
متد .get() کلید رو سرچ میکنه؛ اگه بود مقدارش رو میده، اگه نبود بدون هیچ خطایی اون مقدار پیشفرض (اینجا 18) رو برمیگردونه!
🐍 @python_rd
🔹 خیلی وقتها میخوایم مقداری رو از یک دیکشنری بگیریم، اما اگه کلید وجود نداشته باشه برنامهمون با KeyError کرش میکنه.
❌ روش مبتدی:
user = {"name": "Ali", "role": "admin"}
if "age" in user:
age = user["age"]
else:
age = 18❌ روش مبتدی دیگه:
try:
age = user["age"]
except KeyError:
age = 18
✅ روش حرفهای:
age = user.get("age", 18)🔹 چرا این روش عالیه؟
متد .get() کلید رو سرچ میکنه؛ اگه بود مقدارش رو میده، اگه نبود بدون هیچ خطایی اون مقدار پیشفرض (اینجا 18) رو برمیگردونه!
🐍 @python_rd
❤9🔥1
🔆مستندی که درمورد یکی از محبوب ترین زبانهای دنیا یعنی پایتون ساخته شده و دیدنش کاملا پیشنهاد میشه.
🔹https://www.youtube.com/watch?v=GfH4QL4VqJ0
🐍 @python_rd
🔹https://www.youtube.com/watch?v=GfH4QL4VqJ0
🐍 @python_rd
🔆اگه میخواید با عمیقترین و عجیبترین رفتارهای پایتون آشنا شید حتما این ریپو رو چک کنین.
🔹https://github.com/pablogsal/python-horror-show
🐍 @python_rd
🔹https://github.com/pablogsal/python-horror-show
🐍 @python_rd
❤1
🔆 آشنایی با عملگر والروس (:=)
🔹عملگر := (که به خاطر شباهتش به چشمان و عاجهای والروس، Walrus Operator نامیده میشه) از پایتون ۳.۸ معرفی شد. کار اصلیش اینه که به شما اجازه میده همزمان با مقداردهی متغیر، از اون استفاده هم بکنید (Assignment Expressions).
🔹این کار باعث میشه کد شما کوتاهتر، خواناتر و بهینهتر بشه.
🔹 کد بدون Walrus Operator (روش قدیمی):
🔹 کد با Walrus Operator (روش حرفهای):
🔹 یک کاربرد واقعی و عالی در حلقه while:
فرض کنید میخواهید ورودی کاربر را تا زمان نوشتن کلمه exit دریافت کنید:
🔹 چه زمانی استفاده کنیم؟
* وقتی میخواید از محاسبه مجدد یک مقدار سنگین جلوگیری کنید.
* وقتی میخواید کدهای تکراری در شرطهای if و حلقههای while رو کاهش بدی.
🐍 @python_rd
🔹عملگر := (که به خاطر شباهتش به چشمان و عاجهای والروس، Walrus Operator نامیده میشه) از پایتون ۳.۸ معرفی شد. کار اصلیش اینه که به شما اجازه میده همزمان با مقداردهی متغیر، از اون استفاده هم بکنید (Assignment Expressions).
🔹این کار باعث میشه کد شما کوتاهتر، خواناتر و بهینهتر بشه.
🔹 کد بدون Walrus Operator (روش قدیمی):
data = [1, 2, 3, 4, 5]
n = len(data)
if n > 3:
print(f"تعداد عناصر زیاد است: {n}")
🔹 کد با Walrus Operator (روش حرفهای):
data = [1, 2, 3, 4, 5]
# تعریف متغیر n دقیقاً داخل شرط if!
if (n := len(data)) > 3:
print(f"تعداد عناصر زیاد است: {n}")
🔹 یک کاربرد واقعی و عالی در حلقه while:
فرض کنید میخواهید ورودی کاربر را تا زمان نوشتن کلمه exit دریافت کنید:
# روش تمیز و مدرن با Walrus
while (user_input := input("یک کلمه وارد کنید: ")) != "exit":
print(f"شما وارد کردید: {user_input}")
🔹 چه زمانی استفاده کنیم؟
* وقتی میخواید از محاسبه مجدد یک مقدار سنگین جلوگیری کنید.
* وقتی میخواید کدهای تکراری در شرطهای if و حلقههای while رو کاهش بدی.
🐍 @python_rd
❤2👍2
🔆 پرسپترون - آموزش عملی از کوچکترین عنصر شبکههای عصبی و تاریخچه اون به همراه پیاده سازی پایتون
🔹 https://pabloinsente.github.io/the-perceptron
🐍 @python_rd
🔹 https://pabloinsente.github.io/the-perceptron
🐍 @python_rd
🔆 باز کردن فایلهای Zip بدون Extraxt کردن!
🔹فرض کن یه فایل Zip داری که توش پر از فایلهای متنی یا CSV هست و فقط میخوای محتوای یکیشون رو توی پایتون بخونی. نیازی نیست کل فایل رو روی هارد Extract کنی
🔹پایتون ماژول داخلی به اسم zipfile داره که این کار رو مستقیماً توی حافظه (RAM) انجام میده:
🔹 به چه دردی میخوره اصلا؟
۱. سرعت بالا: نیازی به درگیر کردن I/O دیسک نیست.
۲. کد تمیزتر: نیازی نیست فایلهای موقت اکسترکتشده رو بعد از تموم شدن کار پاک کنی.
🐍 @python_rd
🔹فرض کن یه فایل Zip داری که توش پر از فایلهای متنی یا CSV هست و فقط میخوای محتوای یکیشون رو توی پایتون بخونی. نیازی نیست کل فایل رو روی هارد Extract کنی
🔹پایتون ماژول داخلی به اسم zipfile داره که این کار رو مستقیماً توی حافظه (RAM) انجام میده:
import zipfile
# باز کردن فایل زیپ بدون اکسترکت روی دیسک
with zipfile.ZipFile('data.zip', 'r') as z:
# خواندن مستقیم محتوای یک فایل داخل زیپ
with z.open('notes.txt') as f:
content = f.read().decode('utf-8')
print(content)
🔹 به چه دردی میخوره اصلا؟
۱. سرعت بالا: نیازی به درگیر کردن I/O دیسک نیست.
۲. کد تمیزتر: نیازی نیست فایلهای موقت اکسترکتشده رو بعد از تموم شدن کار پاک کنی.
🐍 @python_rd
❤3
🔆 نسخه فارسی دیزاین پترن به زبان آدمیزاد که برای زبانهای برنامهنویسی دیگه به جز پایتون و جاوا هم مثالهای خوبی زده. در کنار ریپوهای اصلی انگلیسی که خوندشون خیلی به مهارتهای یک مهندس نرمافزار کمک میکنه.
🔹 Persian:
https://github.com/3lf/design-patterns-for-humans
🔹 English Version: https://github.com/rommel-sunga/design-patterns-for-humans-python
https://github.com/kamranahmedse/design-patterns-for-humans
🐍 @python_rd
🔹 Persian:
https://github.com/3lf/design-patterns-for-humans
🔹 English Version: https://github.com/rommel-sunga/design-patterns-for-humans-python
https://github.com/kamranahmedse/design-patterns-for-humans
🐍 @python_rd
GitHub
GitHub - 3lf/design-patterns-for-humans: آموزش دیزاین پترن به زبون آدمیزاد - Teaching design patterns in Persian
آموزش دیزاین پترن به زبون آدمیزاد - Teaching design patterns in Persian - 3lf/design-patterns-for-humans
🔆 با کمک این سایت و تمرینات باحال و interactive اش اگه تا حالا پایتون رو یاد نگرفتید شروع کنید یادگرفتن. از ساده داره تا سخت و مسائل جالبی رو مطرح میکنه
https://genepy.org/exercises
https://genepy.org/exercises
❤1
بچه ها خارج از موضوع کانال، اگه VPN نیاز دارید بهتون
🔹@Red_fire_vpn
رو معرفی و پیشنهاد میکنم.
تبلیغ نیست، قیمتاشون پایینه کیفیتشونم خوبه. از بچههای خودمونم هستن غریبه نیستن😁
خودمم ازشون خرید کردم.
🔹@Red_fire_vpn
رو معرفی و پیشنهاد میکنم.
تبلیغ نیست، قیمتاشون پایینه کیفیتشونم خوبه. از بچههای خودمونم هستن غریبه نیستن😁
خودمم ازشون خرید کردم.
🔆 قدرت Generator ها
چرا لیستهای بزرگ توی پایتون حافظه رو میترکونن؟
🔹 وقتی مینویسی
تمام این لیست میره توی RAM. اگه به جای
از پرانتز
استفاده کنی، داری از
استفاده میکنی.
🔹تفاوت؟ جنریتورها آیتمها رو یکییکی تولید میکنن (Lazy Evaluation). یعنی به جای اشغال کردن فضای زیاد، فقط وقتی لازم داری محاسبه میشن. برای پردازش فایلهای بزرگ یا دیتای حجیم، جنریتورها بهترین دوست تو هستن.
🐍 @python_rd
چرا لیستهای بزرگ توی پایتون حافظه رو میترکونن؟
🔹 وقتی مینویسی
[x for x in range(1000000)]
تمام این لیست میره توی RAM. اگه به جای
[]
از پرانتز
()
استفاده کنی، داری از
Generator
استفاده میکنی.
🔹تفاوت؟ جنریتورها آیتمها رو یکییکی تولید میکنن (Lazy Evaluation). یعنی به جای اشغال کردن فضای زیاد، فقط وقتی لازم داری محاسبه میشن. برای پردازش فایلهای بزرگ یا دیتای حجیم، جنریتورها بهترین دوست تو هستن.
🐍 @python_rd
👍5
🔆دیباگ حرفهای در جنگو
🔹 با
🔹 خیلی وقتها فکر میکنیم کدمون بهینه است، اما وقتی پنل دیباگ رو باز میکنیم، میبینیم ۱۰ تا کوئری تکراری به دیتابیس زدیم. این ابزار بهت نشون میده دقیقاً چند تا کوئری، در چه زمانی و با چه پارامترهایی اجرا شدن.
🔹 بهترین راه برای شناسایی مشکلاتی مثل N+1 Query همینه.
🐍 @python_rd
🔹 با
django-debug-toolbar رفیق شو!🔹 خیلی وقتها فکر میکنیم کدمون بهینه است، اما وقتی پنل دیباگ رو باز میکنیم، میبینیم ۱۰ تا کوئری تکراری به دیتابیس زدیم. این ابزار بهت نشون میده دقیقاً چند تا کوئری، در چه زمانی و با چه پارامترهایی اجرا شدن.
🔹 بهترین راه برای شناسایی مشکلاتی مثل N+1 Query همینه.
🐍 @python_rd
🔥1
🔆 چرا پایتون کندتر از C عه، ولی دنیای AI و Data Science رو فتح کرده؟
🔹همهمون شنیدیم که میگن «پایتون یک زبان کنده!». خب اگه کنده، چرا OpenAI، Google و Meta پروژههای هوش مصنوعیشون رو روی پایتون پیاده میکنن؟
راز داستان چیه؟
🔹 ۱. کتابخونههای C/C++ تحت پوشش:
کتابخونههای سنگینی مثل NumPy یا PyTorch روی پایتون اجرا میشن، اما هسته اصلیشون با C و C++ نوشته شده! پایتون فقط نقش یک «چسب» خوشدست رو بازی میکنه.
🔹 ۲. سرعت توسعه > سرعت اجرا:
در دنیای واقعی، زمانی که برنامه نویس صرف کدزدن میکنه گرونتر از زمان پردازش سروره!
🔹 ۳. GIL (Global Interpreter Lock):
قفلی که جلوی اجرای همزمان واقعی چند ترد (Multi-threading) رو میگرفت، حالا در نسخههای جدید پایتون (Python 3.13+) داره اختیاری/حذف میشه تا پایتون سریعتر از همیشه بشه.
🐍 @python_rd
🔹همهمون شنیدیم که میگن «پایتون یک زبان کنده!». خب اگه کنده، چرا OpenAI، Google و Meta پروژههای هوش مصنوعیشون رو روی پایتون پیاده میکنن؟
راز داستان چیه؟
🔹 ۱. کتابخونههای C/C++ تحت پوشش:
کتابخونههای سنگینی مثل NumPy یا PyTorch روی پایتون اجرا میشن، اما هسته اصلیشون با C و C++ نوشته شده! پایتون فقط نقش یک «چسب» خوشدست رو بازی میکنه.
🔹 ۲. سرعت توسعه > سرعت اجرا:
در دنیای واقعی، زمانی که برنامه نویس صرف کدزدن میکنه گرونتر از زمان پردازش سروره!
🔹 ۳. GIL (Global Interpreter Lock):
قفلی که جلوی اجرای همزمان واقعی چند ترد (Multi-threading) رو میگرفت، حالا در نسخههای جدید پایتون (Python 3.13+) داره اختیاری/حذف میشه تا پایتون سریعتر از همیشه بشه.
🐍 @python_rd
🔆 افزایش ۱۰ برابری سرعت برنامههای پایتون فقط با ۱ خط کد!
🔹 تا حالا شده توی پایتون یک تابع محاسباتی سنگین (مثل فاکتوریل، فیبوناچی یا پردازش داده) داشته باشی که با ورودیهای تکراری مدام اجرا بشه و سیپییو رو درگیر کنه؟
🔹پایتون برای این کار یک ابزار فوقالعاده توی کتابخونه داخلی functools داره به اسم @cache (یا @lru_cache).
🔹 روش عادی (اجرای مجدد محاسبات تکراری):
🔹روش هوشمندانه با Cache (ذخیره نتایج قبلی در حافظه):
🔹 چطور کار میکنه؟
وقتی دکوراتور @cache رو بالای تابع میذاری، پایتون ورودیها و خروجیهای تابع رو یادش میمونه. دفعه بعد که همون ورودی داده بشه، به جای محاسبه مجدد، بلافاصله جواب رو از رم برمیگردونه!
🐍 @python_rd
🔹 تا حالا شده توی پایتون یک تابع محاسباتی سنگین (مثل فاکتوریل، فیبوناچی یا پردازش داده) داشته باشی که با ورودیهای تکراری مدام اجرا بشه و سیپییو رو درگیر کنه؟
🔹پایتون برای این کار یک ابزار فوقالعاده توی کتابخونه داخلی functools داره به اسم @cache (یا @lru_cache).
🔹 روش عادی (اجرای مجدد محاسبات تکراری):
def fibonacci(n):
if n < 2:
return n
return fibonacci(n - 1) + fibonacci(n - 2)
# برای n = 35 چند ثانیه طول میکشه و میلیونها محاسبه تکراری انجام میده!
print(fibonacci(35))
🔹روش هوشمندانه با Cache (ذخیره نتایج قبلی در حافظه):
from functools import cache
@cache
def fibonacci(n):
if n < 2:
return n
return fibonacci(n - 1) + fibonacci(n - 2)
# اجرای همون کد در کسری از میلیثانیه (O(n) به جای O(2^n))!
print(fibonacci(35))
🔹 چطور کار میکنه؟
وقتی دکوراتور @cache رو بالای تابع میذاری، پایتون ورودیها و خروجیهای تابع رو یادش میمونه. دفعه بعد که همون ورودی داده بشه، به جای محاسبه مجدد، بلافاصله جواب رو از رم برمیگردونه!
🐍 @python_rd
❤1🔥1