TGViewer
Channel Public Channel
PyCoders (پایتون)

PyCoders (پایتون)

@python_rd

◇ #پایتون جادوگر دنیای برنامه نویسی!
◇ معرفی حوزه های کاری پایتون
◇ معرفی کتابخونه های کاربردی
◇ معرفی دوره های مفید
◇ معرفی تکنیک ها و نکات
◇ نقشه راه حوزه های مختلف
◇ اخبار و آپدیت های پایتون
◇ و هر چیزی در مورد پایتون!

■ گروه پایتون:
@programmers_py
Subscribers
4.1K
Photos
979
Videos
148
Links
238

Showing posts older than #2136 · Back to latest

Older Posts 20 shown
Post #2133 585
🔆 چطوری مثل یه پایتونکار حرفه‌ای کد بزنم؟

🔹 خیلی وقت‌ها می‌خوایم مقداری رو از یک دیکشنری بگیریم، اما اگه کلید وجود نداشته باشه برنامه‌مون با 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
  • 🔥 2
Post #2132 533
PyCoders (پایتون) 🔆 اعدادی که تو پایتون هیچ‌وقت پاک نمی‌شن! 🔹 می‌دونستی پایتون یه کلوپ اختصاصی برای اعدادی داره که هیچ‌وقت از حافظه RAM پاک نمی‌شن؟ 🔹تو پایتون، تکنیکی به نام Integer Caching یا Small Integer Optimization وجود داره. 🔹 یعنی چی؟ وقتی پایتون بالا میاد، اعدادی…
این پستو مطالعه کنید و دوباره به تست جواب بدید
Post #2131 562
PyCoders (پایتون) 🔆 تست! 🔸 خروجی چیه؟ x = 256 y = 256 print(x is y) m = 257 n = 257 print(m is n) 🐍 @pyrhon_rd
میبینم که پستای کانالو مطالعه نمیکنین
Post #2130 661
🔆 تست!

🔸 خروجی چیه؟
x = 256
y = 256
print(x is y)

m = 257
n = 257
print(m is n)

🐍 @pyrhon_rd
  • 🔥 1
Post #2129 618
🔆 یه کتابخانه کاربردی برای ساختارمند کردن لاگ‌ها تو پایتون که باعث می‌شه لاگ‌ها به‌صورت JSON و قابل پردازش باشن و راحت‌تر به ابزارهایی مثل Grafana یا ELK ارسال و تحلیل شن.

https://www.structlog.org

🐍 @python_rd
  • 👍 1
Post #2128 530
🔆 مشاهده رمز های ذخیره شده شبکه های وای فای در ویندوز.

🔹 کد:
import subprocess

profiles = subprocess.check_output(

"netsh wlan show profiles", shell=True

).decode()

names []

for line in profiles.split("\n"):

if "All User Profile" in line:

names.append(line.split(":")[1].strip())

for i, name in enumerate (names, 1):

print(f"[{i}] {name}")

choice = int(input("\nChoose WiFi number: "))

result = subprocess.check_output(

f'netsh wlan show profile "{names [choice-1]}" key=clear', shell=True

).decode()

print("\n" + result)

🔹 خروجی:
HomeLab_24

StudioMesh_5G

AthenaGuest

Workstation_AP

NovaPhoneHotspot

GreenRouter_2.4G

BlueFiber_5G

🔹 این اسکریپت از دستور netsh ویندوز استفاده میکنه؛ یعنی خودش رمز رو هک نمیکنه فقط اطلاعاتی رو نمایش میده که قبلاً روی همون سیستم ذخیره شده و کاربر بهش دسترسی داره

🔹نحوه اجرا

1. این کد فقط روی Windows اجرا میشه.

2. باید 3 Python روی سیستم نصب باشه.

3. کد رو داخل یک فایل با پسوند py ذخیره کن.

4. از طریق CMD یا PowerShell اجراش کن

python filename.py

5. بعد از اجرا شماره شبکه مورد نظر رو وارد کن تا اطلاعات اون نمایش داده بشه.

🐍 @python_rd
  • 🔥 1
Post #2127 503
🔆 ترفند تمیز: مقداردهی خودکار دیکشنری با 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_rd
  • 🔥 2
Post #2126 693
🔆 اعدادی که تو پایتون هیچ‌وقت پاک نمی‌شن!


🔹 می‌دونستی پایتون یه کلوپ اختصاصی برای اعدادی داره که هیچ‌وقت از حافظه 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_rd
  • ❤ 4
Post #2125 536
🔆 لاگ‌گیریِ حرفه‌ای بدون دردسر با 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_rd
  • 👍 3
Post #2124 508
🔆 خروجی کد چیه؟

x = [1, 2, 3]
y = x
y.append(4)

print(len(x))

🐍 @python_rd
Post #2123 605
🔆 خداحافظی با دردسرهای datetime

🔹اگه در پایتون با کتابخانه استاندارد datetime کار کرده باشی، میدونی که مدیریت منطقه زمانی (Timezone)، فرمت‌دهی و محاسبات تاریخ بعضی وقتا تبدیل به دردسر بزرگی میشه!

🔹 راه حل: کتابخانه فوق‌العاده Pendulum

این کتابخونه تموم قابلیت‌های datetime رو داره، اما با سینتکس بسیار ساده‌تر و ابزارهای قدرتمندتر.

🔹چند مثال کاربردی:


🔹 دریافت زمان کنونی با مدیریت Timezone:
import pendulum

# دریافت زمان فعلی تهران
now_tehran = pendulum.now('Asia/Tehran')
print(now_tehran)

🔹 محاسبه و اضافه/کم کردن زمان (خوانا و ساده):
dt = pendulum.datetime(2026, 8, 2)

# اضافه کردن ۳ هفته و ۲ روز
future = dt.add(weeks=3, days=2)
print(future.to_date_string()) # 2026-08-25

🔹 نمایش تاریخ به زبان انسانی (Human-readable):
past_time = pendulum.now().subtract(hours=5)

# نمایش چقدر از اون زمان گذشته
print(past_time.diff_for_humans())
# خروجی: "5 hours ago"

🔹چرا Pendulum؟

جایگزین ۱۰۰٪ سازگار برای datetime

هندل کردن بسیار راحت‌تر و دقیق‌تر Timezoneها

محاسبه اختلاف دو تاریخ بدون کدنویسی پیچیده

🔹نصب:
pip install pendulum

🐍 @python_rd
  • 👍 3
Post #2121 1.23K
🔆فکر کن داری اطلاعاتِ ۵ تا سایت رو اسکرپ می‌کنی؛ اگه پشت سر هم بزنی، باید صبر کنی اولی تموم بشه تا دومی شروع شه. این یعنی اتلاف وقت!

🔹مثلاً به جای این:
for url in urls:

data = requests.get(url).json()
# اینجا برنامه تا گرفتن جواب قفل می‌کنه!

🔹اینو بنویس:
tasks = [fetch_data(url) for url in urls]

results = await asyncio.gather(*tasks)

🔹 با gather به پایتون می‌گی: «همه‌شون رو با هم استارت بزن و وقتی همه‌شون جواب دادن، نتیجه رو یکجا بهم تحویل بده».

🔹 توی کارهای شبکه‌ای، این تفاوت بینِ یک برنامه کند و یک سیستمِ فوق‌سریعِ مقیاس‌پذیره.

🐍 @pyrhon_rd
  • 🔥 4
Post #2120 599
🔆خیلی وقتا توی جنگو فقط اسمِ کاربری رو لازم داریم، ولی اشتباهاً کلِ رکورد (با کلی فیلدِ سنگین) رو از دیتابیس می‌کشیم بیرون!

🔹مثلاً به جای این:
all_users = User.objects.all()
# واکشی تمامِ اطلاعات مثل بیوگرافی، آدرس، تاریخ تولد و…

🔹اینو بنویس:
usernames = User.objects.values_list(‘username’, flat=True)

🔹 متدِ values_list با flat=True فقط اون ستونی که می‌خوای رو میاره و دیتابیس رو بی‌خودی شلوغ نمی‌کنه.

🔹 وقتی دیتابیس‌ت میلیونی بشه، همین کوئری‌های بهینه هستن که سایتت رو سرپا نگه میدارن.

🐍 @pyrhon_rd
  • ❤ 4
Post #2119 612
🔆تو پایتون معمولا برای شرط‌گذاری چندتایی از or پشت سر هم استفاده می‌کنن، در حالی که in هم تمیزتره هم خواناتر.

مثلاً به جای این:
status = "pending"

if status == "pending" or status == "waiting" or status == "hold":
print("not ready")

اینو بنویس:
status = "pending"

if status in {"pending", "waiting", "hold"}:
print("not ready")

🔹وقتی تعداد شرط‌ها بیشتر میشه، این مدل هم کدت رو حرفه‌ای‌تر می‌کنه هم بعداً تغییر دادنش راحت‌تره.

🔹 برای چک کردن چند مقدار مشخص، in یکی از ساده‌ترین چیزهاس

🐍 @pyrhon_rd
  • ❤ 4
  • 👍 1
Post #2118 616
🔆 پایتون رو اینجوری و پله پله شروع کن، سعی نکن یه شبه بری بالا:

1) Python Fundamentals
2) Variables & Data Types
3) Operators & Input/Output
4) Conditional Statements
5) Loops
6) Functions
7) Lists, Tuples, Sets, Dictionaries
8) File Handling
9) Exception Handling
10) OOP in Python
11) Modules & Packages
12) Git & GitHub
13) SQL & Databases
14) APIs & JSON
15) Web Framework: Flask / Django / FastAPI
16) Testing & Debugging
17) Data Structures & Algorithms
18) Deployment & Cloud Basics

🐍 @pyrhon_rd
  • ❤‍🔥 6
  • 👎 1
Post #2117 572
🔆 توی کدنویسی خیلی وقت‌ها پیش میاد که می‌خوایم یه خطای احتمالی رو نادیده بگیریم و بدون دردسر ازش رد بشیم. مثلاً فرض کن می‌خوای یه فایل رو حذف کنی و برات مهم نیست که اون فایل از قبل وجود داره یا نه. راه سنتی و معمولی اینه که یه بلاک try-except بنویسی و توی بخش except بنویسی pass که ظاهر کد رو شلوغ و نامرتب می‌کنه.

🔹 اما پایتون یه ابزار فوق‌العاده تمیز برای این کار داره به اسم suppress که توی کتابخونه contextlib قرار داره. با استفاده از اون می‌تونی خیلی راحت بنویسی with suppress(FileNotFoundError) و بعد دستور حذف فایل رو اجرا کنی. با این کار اگه فایل وجود نداشته باشه، پایتون بدون اینکه برنامه رو کرش کنه یا نیاز به نوشتن بلاک‌های طولانی باشه، خیلی شیک از روش رد میشه. این ترفند کدت رو خلوت‌تر و خواناتر می‌کنه.

from contextlib import suppress
import os

# روش تمیز و پایتونیک بدون نیاز به try-except و pass
with suppress(FileNotFoundError):
os.remove("data.txt")

🐍 @pyrhon_rd
  • 🔥 2
  • ❤ 1
Post #2116 707
🔆 توی پایتون with دقیقا چیکار میکنه؟

🔹خیلی وقت‌ها ما با فایل، دیتابیس یا منابعی کار می‌کنیم که باید بعد از استفاده حتماً بسته یا آزاد بشن.
اینجا with به دردت میخوره.

مثلاً باز کردن فایل:

with open("data.txt", "r") as file:
content = file.read()

مزیتش چیه؟
- فایل بعد از تموم شدن کار، خودکار بسته می‌شه
- کد تمیزتر می‌شه
- احتمال فراموش کردن close() از بین می‌ره

مقایسه کن با این حالت:

file = open("data.txt", "r")
content = file.read()
file.close()

اینجا اگر وسط کار خطا رخ بده، ممکنه فایل بسته نشه.
ولی with این مشکل رو خیلی بهتر مدیریت می‌کنه.

پس هر وقت با منبعی کار می‌کنی که باید حتماً تمیز جمع بشه، with بهترین انتخابته.


🐍 @python_rd
  • 👍 4
  • ❤ 2
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →