PyCoders (پایتون)
описание
◇ #پایتون جادوگر دنیای برنامه نویسی! ◇ معرفی حوزه های کاری پایتون ◇ معرفی کتابخونه های کاربردی ◇ معرفی دوره های مفید ◇ معرفی تکنیک ها و نکات ◇ نقشه راه حوزه های مختلف ◇ اخبار و آپدیت های پایتون ◇ و هر چیزی در مورد پایتون! ■ گروه پایتون: @programmers_py
4 071
подписчиков
Охват к подписчикам
8,9%
ERR
Реакции к просмотрам
0,35%
56 на 30 постов
Пересылки к просмотрам
1,63%
261
Постов в день
0,9
всего 30
Где отзываются чаще
доля реакций к просмотрам- 6 авг.🔆 چطوری مثل یه پایتونکار حرفهای کد بزنم؟ 🔹 خیلی وقتها میخوایم مقداری رو از یک دیکشنری بگیریم، اما اگه کلید وجود نداشته باشه برنامهمون با 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_rd2,27%
- 12 авг.🔆 قدرت Generator ها چرا لیستهای بزرگ توی پایتون حافظه رو میترکونن؟ 🔹 وقتی مینویسی [x for x in range(1000000)] تمام این لیست میره توی RAM. اگه به جای [] از پرانتز () استفاده کنی، داری از Generator استفاده میکنی. 🔹تفاوت؟ جنریتورها آیتمها رو یکییکی تولید میکنن (Lazy Evaluation). یعنی به جای اشغال کردن فضای زیاد، فقط وقتی لازم داری محاسبه میشن. برای پردازش فایلهای بزرگ یا دیتای حجیم، جنریتورها بهترین دوست تو هستن. 🐍 @python_rd1,82%
- 13 авг.🔆 افزایش ۱۰ برابری سرعت برنامههای پایتون فقط با ۱ خط کد! 🔹 تا حالا شده توی پایتون یک تابع محاسباتی سنگین (مثل فاکتوریل، فیبوناچی یا پردازش داده) داشته باشی که با ورودیهای تکراری مدام اجرا بشه و سیپییو رو درگیر کنه؟ 🔹پایتون برای این کار یک ابزار فوقالعاده توی کتابخونه داخلی 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_rd1,29%
- 14 авг.🔆دام خطرناک لیست پیشفرض در تابع 🔹این کد در نگاه اول درست به نظر میرسه: def add_item(item, items=[]): items.append(item) return items 🔹اما لیست items فقط یکبار ساخته میشه و بین همهی فراخوانیها مشترکه! راه درست: def add_item(item, items=None): if items is None: items = [] items 🐍 @python_rd1,13%
- 7 авг.🔆 آشنایی با عملگر والروس (:=) 🔹عملگر := (که به خاطر شباهتش به چشمان و عاجهای والروس، 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_rd0,99%
- 8 авг.🔆 باز کردن فایلهای Zip بدون Extraxt کردن! 🔹فرض کن یه فایل 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_rd0,77%
- 3 авг.🔆 لاگگیریِ حرفهای بدون دردسر با Loguru 🔹ماژول استاندارد logging او پایتون قدرتمنده، ولی کانفیگ کردن و تنظیمات اولیه اش پیچیده و زمانبره. کتابخانه Loguru اومده تا لاگگیری رو به سادهتر کنه. 🛠 نصب کتابخانه: pip install loguru 🔹مثال: from loguru import logger # فقط با همین یک خط خروجی رنگی و استاندارد بگیرید! logger.info("سرور با موفقیت روشن شد.") logger.warning("میزان مصرف RAM بالا رفته است!") # ذخیره خودکار لاگها در فایل با قابلیت چرخش (Rotation) logger.add("app_logs.log", rotation="10 MB") # هر وقت فایل ۱۰ مگابایت شد فایل جدید میسازد @logger.catch # مدیریت خودکار استثناها و لاگ کردن کامل Traceback def divide(a, b): return a / b # تست خطا divide(10, 0) 🔹قابلیتهای کلیدی: صفر کانفیگ: بدون هیچ تنظیمات اولیهای آماده استفاده اس. خروجی رنگی و تمیز: شامل تاریخ، زمان دقیق، سطح لاگ (INFO, ERROR, ...)، اسم فایل و شماره خط. مدیریت فایل لاگ: تنظیم آسون برای زیپ کردن، حذف لاگهای قدیمی و جداسازی حجم فایلها. دکوراتور @logger.catch: تمامی Exceptionها رو با جزئیات دقیق و بدون کرش کردن برنامه لاگ میکنه. 🐍 @pyrhon_rd0,69%
- 4 авг.🔆 ترفند تمیز: مقداردهی خودکار دیکشنری با defaultdict 🔹تا حالا شده بخوای توی یک دیکشنری بستهبندی یا گروهبندی انجام بدی و هی مجبور باشی وجود کلید رو بررسی کنی؟ 🔹 روش پردردسر: data = {} # اگر کلید نباشه، خطای KeyError میده! if "fruits" not in data: data["fruits"] = [] data["fruits"].append("apple") 🔹 روش حرفهای با defaultdict: from collections import defaultdict # مشخص میکنیم مقدار پیشفرض یک لیست خالی باشه data = defaultdict(list) # بدون هیچ بررسی، مستقیم اضافه کن! data["fruits"].append("apple") print(data) # defaultdict(<class 'list'>, {'fruits': ['apple']}) 🔹کاربرد: موقع کار با دادهها، لاگها یا ساخت ساختارهای پیچیده، کلی از شلوغی کُدت کم میکنه. 🐍 @python_rd0,50%
- 3 авг.🔆 اعدادی که تو پایتون هیچوقت پاک نمیشن! 🔹 میدونستی پایتون یه کلوپ اختصاصی برای اعدادی داره که هیچوقت از حافظه RAM پاک نمیشن؟ 🔹تو پایتون، تکنیکی به نام Integer Caching یا Small Integer Optimization وجود داره. 🔹 یعنی چی؟ وقتی پایتون بالا میاد، اعدادی از -5 تا 256 رو مپ میکنه و به صورت ثابت تو RAM نگه میداره. هر وقت او کدتون از این اعداد استفاده کنید، پایتون متغیر جدیدی تو حافظه نمیسازه، بلکه اشارهگر رو روی همون اعدادی که از قبل تو RAM ساخته برمیگردونه! 🔹 این کد رو ببینید: # اعدادی که در کلوپ اختصاصی هستن: a = 100 b = 100 print(a is b) # Output: True (هر دو دقیقاً یک خونه حافظه هستن!) # اعدادی که خارج از کلوپ هستن: x = 300 y = 300 print(x is y) # Output: False (دو خانه حافظه کاملاً مجزا!) 🔹 چرا پایتون این کار رو میکنه؟ چون اعداد -5 تا 256 پرکاربردترین اعداد در محاسبات و حلقهها (مثل range) هستن. با این تریک کوچولو، پایتون از ساخت و نابودی مداوم این اعداد تو حافظه جلوگیری میکنه و سرعت برنامهها رو به شدت بالا میبره. 🔹 نکته: عملگر is آدرس حافظه دو متغیر رو مقایسه میکنه، نه مقدارشون رو! 🐍 @python_rd0,50%
- 18 мая 2025 г.без подписи0,49%
- 12 авг.🔆دیباگ حرفهای در جنگو 🔹 با django-debug-toolbar رفیق شو! 🔹 خیلی وقتها فکر میکنیم کدمون بهینه است، اما وقتی پنل دیباگ رو باز میکنیم، میبینیم ۱۰ تا کوئری تکراری به دیتابیس زدیم. این ابزار بهت نشون میده دقیقاً چند تا کوئری، در چه زمانی و با چه پارامترهایی اجرا شدن. 🔹 بهترین راه برای شناسایی مشکلاتی مثل N+1 Query همینه. 🐍 @python_rd0,37%
- 14 апр. 2025 г.без подписи0,35%