| کانال توسعهدهندگان پایتون |
Kanalga Telegram’da o‘tish
⭕️ کانال توسعهدهندگان پایتون دولوپیکس 💠 دولوپیکس | جامعه توسعهدهندگان ایرانی 💎 @Developix 🚀 Developix.ir 📌 پشتیبانی و تبلیغات: @DevelopixSupport
Ko'proq ko'rsatish7 092
Obunachilar
+624 soatlar
+797 kunlar
+18730 kunlar
Postlar arxiv
خروجی اجرای این کد در 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جنگو (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✅ شرطهای تمیزتر در 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در قطعهکد زیر با یکی از رفتارهای مهم و گاهی خطرناک در Python روبهرو هستیم: آرگومان پیشفرض قابلتغییر (Mutable Default Argument).
خروجی اجرای این کد (چاپشده در انتهای برنامه) چیست؟
def append_item(item, data=[]):
data.append(item)
return data
x = append_item(1)
y = append_item(2)
z = append_item(3, data=[])
w = append_item(4)
print(x)
print(y)
print(z)
print(w)
پاسخ را فقط به صورت خروجی نهایی تابع printها (به ترتیب هر خط)، بنویسید.
🔖 #Python #پایتون
👤 Developix
💎 Channel: @DevelopixPythonخروجی اجرای این کد در Python چیست؟
funcs = []
for i in range(3):
funcs.append(lambda x, p=i: x * p)
result = sum(f(10) for f in funcs)
print(result)
به عددی که در خروجی چاپ میشود توجه کنید و فقط همان عدد را بنویسید.
🔖 #Python #پایتون
👤 Developix
💎 Channel: @DevelopixPythonFastAPI یکی از مدرنترین فریمورکهای Python برای ساخت REST API و سرویسهای سریع است 🚀
با استفاده از type hints استاندارد پایتون (مثل
str و int) همزمان:
• اسکیمای دادهها را تعریف میکنی ✅
• validation اتومات میگیری ✅
• مستندات زنده OpenAPI و Swagger UI تحویل میگیری ✅
برای میکروسرویسها، Backend اپهای موبایل، و سرویسهای ML که نیاز به عملکرد بالا دارند، انتخاب خیلی خوبی است.
نصب و یک مثال ساده:
pip install fastapi uvicorn
from fastapi import FastAPI
app = FastAPI()
@app.get("/hello")
async def hello(name: str = "Python"):
return {"msg": f"Hello {name}!"}
# اجرا:
# uvicorn main:app --reload
نکته: پارامترهای تابع، خودکار به query/body تبدیل میشوند و خطاهای validation به صورت JSON مرتب برمیگردند؛ خیلی مناسب برای frontend و mobile تیم.
مستندات رسمی:
📚 FastAPI Docs
💻 GitHub
امتحانش ارزش دارد؛ مخصوصاً اگر از Flask/Django API خسته از boilerplate شدهای 🙂
🔖 #Python #پایتون #Python #FastAPI #Web #API #Backend
👤 Developix
💎 Channel: @DevelopixPythonRepost from ابر ویراک
ویراک کلود | تجربهی ابری بدون محدودیت ☁️🚀
🎁 ۲۰٪ شارژ هدیه روی اولین واریزی
مزیتهایی که واقعاً فرق میسازن:
⚡️ پهنای باند 980 مگ
🌐با IP مازاد
⏱️ راهاندازی فوری
💳 پرداخت ساعتی
🛡 پشتیبانی ۲۴/۷
💬 هر سوالی داشتی، تیم ما کنارتـه
✅ مناسب استارتاپها، تیمهای فنی، تا سازمانهای بزرگ
همین الان شروع کن و با حداکثر منابع، سریعتر رشد کن 👇🏻
📞 تماس سریع: 02191555530
🔗 https://virakcloud.com
در کد زیر تلاش شده یک singleton ساده با استفاده از decorator نوشته شود، اما پیادهسازی فعلی هم از نظر نوع اشارهگر تابع (callable) و هم از نظر کار با
__init__ در کلاس Logger مشکل دارد و باعث رفتار نادرست میشود.
بهگونهای کد را اصلاح کنید که Logger() همیشه یک نمونهی واحد (singleton) برگرداند و همچنان بتوان آن را مثل یک کلاس عادی سازنده صدا زد، بدون اینکه ساختار کلی (ایدهی decorator singleton برای کلاس) بهطور کامل عوض شود.
🔖 #Python #پایتون
👤 Developix
💎 Channel: @DevelopixPythonRepost from کانال رسمی تک نت | Taknet
🚀 سرور اختصاصی با تنوع منابع برای هر نوع نیاز
⏺پورت اختصاصی
⏺آپلود رایگان
⏺تخفیف پلکانی ترافیک
⏺آپتایم 99.99%
⏺24 ساعت تست رایگان
⏺ارائه IP مازاد
⏺پشتیبانی 24/7
⏺تحویل فوری
⏺ارائه سرویس Colocation
⏺بدون قطعی
⏺پرداخت ماهیانه
⏰ تعداد محدود – برای استفاده از این تخفیف ویژه سریع اقدام کن!
برای اطلاعات بیشتر و سفارش، تماس بگیر:
🔺 02191555530
💻 خرید سرور اختصاصی
👨💻 سوال برای توسعهدهندگان Python
خروجی اجرای کد زیر در Python چیست؟
به تفاوت بین متغیرهای سازنده (constructor) و متغیرهای کلاس و همینطور نحوهٔ ذخیره شدن default argumentها در حافظه دقت کنید.
class A:
cache = []
def __init__(self, items=None):
if items is None:
items = []
self.items = items
self.cache.append(len(self.items))
x = A([1, 2])
y = A()
z = A()
x.items.append(3)
y.items.extend([10, 20])
print(x.items, y.items, z.items, A.cache)
خروجی دقیق تابع print را بنویسید.
🔖 #Python #پایتون
👤 Developix
💎 Channel: @DevelopixPython+1
در نمونهکد بالا تابع load_rows اول همهی دادهها را یکجا در مموری میریزد و بعد روی آنها loop میزند؛ این کار روی فایلهای بزرگ باعث Memory مصرفی بالا و حتی کرش برنامه میشود. در عوض، با برگرداندن یک generator و استفاده از
yield میتوانید خطوط را بهصورت lazy و streamشده پردازش کنید تا هم مصرف مموری کم شود و هم عملکرد در سناریوهای پردازش فایلهای بزرگ (مثلاً لاگهای چندگیگابایتی) بهتر شود. بهخصوص در برنامههای ETL، پردازش لاگ و data pipelineها، این الگو نسبت به رویکرد لیستمحور نمونهی اول یک Design بهمراتب پایدارتر و scalable محسوب میشود.
🔖 #Python #پایتون
👤 Developix
💎 Channel: @DevelopixPython الگوی Strategy: خداحافظ if-elif-elseهای غولآسا 🧠
یکی از Code Smellهای رایج در پروژههای Python، بهخصوص در Django / FastAPI، زنجیرههای بزرگ if / elif برای انتخاب نوع رفتار است. این ساختارها هم سخت تست میشوند، هم هر تغییر کوچکی را پرریسک میکنند.
یک راهحل تمیز و شناختهشده در Design Patternها برای این مشکل، الگوی Strategy است. این الگو منطقهای قابلجایگزین (قابل تعویض) را در آبجکتهای جدا نگه میدارد و کد را قابلگسترش و خواناتر میکند. 🙌
مثال ساده: فرض کنید در یک سرویس پرداخت، بسته به نوع روش پرداخت، منطق متفاوتی دارید:
class PaymentService:
def pay(self, method: str, amount: int) -> None:
if method == "card":
print("Paying by card", amount)
elif method == "paypal":
print("Paying by PayPal", amount)
elif method == "crypto":
print("Paying by crypto", amount)
else:
raise ValueError("Unsupported method")
این کلاس هم تکمسئولیتی نیست، هم هر بار روش جدیدی اضافه میشود باید کلاس را ادیت کنیم. زیر پا گذاشتن اصل Open/Closed.
با Strategy همین منطق را تمیز میکنیم:
from abc import ABC, abstractmethod
class PaymentStrategy(ABC):
@abstractmethod
def pay(self, amount: int) -> None:
...
class CardPayment(PaymentStrategy):
def pay(self, amount: int) -> None:
print("Paying by card", amount)
class PaypalPayment(PaymentStrategy):
def pay(self, amount: int) -> None:
print("Paying by PayPal", amount)
class CryptoPayment(PaymentStrategy):
def pay(self, amount: int) -> None:
print("Paying by crypto", amount)
class PaymentService:
def __init__(self, strategy: PaymentStrategy) -> None:
self._strategy = strategy
def pay(self, amount: int) -> None:
self._strategy.pay(amount)
حالا انتخاب Strategy میتواند در لایهی وب (مثلاً FastAPI endpoint) انجام شود و PaymentService تمیز و قابلتست میماند:
def get_strategy(method: str) -> PaymentStrategy:
mapping = {
"card": CardPayment(),
"paypal": PaypalPayment(),
"crypto": CryptoPayment(),
}
try:
return mapping[method]
except KeyError:
raise ValueError("Unsupported method")
نکته عملی قابلاستفاده امروز ✅
هرجا یک تابع یا view دارید که براساس یک نوع (type / method / status) با if-elifهای زیاد شاخهبندی میکند، آن منطق را به کلاسهای کوچکتر Strategy تبدیل کنید و یک mapping تمیز بسازید. این کار هم خوانایی را بالا میبرد، هم اضافهکردن رفتار جدید را بدون دستزدن به منطق قدیمی ممکن میکند.
برای مطالعهی عمیقتر درباره Strategy:
refactoring.guru/design-patterns/strategy
کد تمیز با الگوهای درست، در پروژههای واقعی Python تفاوت جدی در سرعت توسعه و لذت کار ایجاد میکند. 🚀 امروز یکی از if-elifهای سنگین پروژهتان را به یک Strategy تمیز تبدیل کنید و نتیجه را در نگهداری و تستها ببینید.
🔖 #Python #پایتون #python #strategy_pattern #clean_code #design_patterns #architecture #refactoring
👤 Developix
💎 Channel: @DevelopixPython📌 باز و بسته کردن فایل با context manager
خیلی وقت cها توی کدهای Python دیده می cشه فایل رو با
open() باز می cکنیم، ولی فراموش می cکنیم ببندیمش. این کار می cتونه باعث Memory Leak، خطاهای عجیب روی سیستم فایل و قفل شدن فایل بشه.
راه تمیز و Pythonic استفاده از کلمهٔ کلیدی with هست که خودش به cصورت خودکار فایل رو می cبنده، حتی اگر وسط کار Exception بیاد. 😎
# ❌ روش ضعیف
f = open("data.txt", "r", encoding="utf-8")
text = f.read()
# اگر اینجا Exception بیاد، f.close() هرگز صدا زده نمی cشه
f.close()
# ✅ روش پیشنهادی با context manager
with open("data.txt", "r", encoding="utf-8") as f:
text = f.read()
print(len(text))
اینجا with تضمین می cکنه بعد از اتمام بلاک، چه کد موفق اجرا بشه چه Exception رخ بده، متد f.close() صدا زده بشه. این دقیقاً رفتاریه که برای منابع حساس مثل فایل، کانکشن دیتابیس، و ساکت cها می cخوایم. 🔐
نکتهٔ مهم دیگه اینه که with کد رو خواناتر و قابل cاعتمادتر می cکنه؛ هر کسی کد رو ببینه، فوراً متوجه scope استفاده از منبع می cشه و لازم نیست دنبال close() بگرده.
این الگو رو می cشه برای چند فایل همزمان هم استفاده کرد:
with open("input.txt", "r", encoding="utf-8") as fin, \
open("output.txt", "w", encoding="utf-8") as fout:
for line in fin:
fout.write(line.upper())
امتحان این الگو توی پروژه cهای فعلی، مخصوصاً جاهایی که با فایل، شبکه یا هر منبع خارجی کار می cشه، یکی از سریع cترین بهبودهای کد محسوب می cشه. ✨
منبع رسمی برای جزئیات بیشتر:
Python Docs - The with statement
🔖 #Python #پایتون #Python #File_I/O #Context_Manager #Best_Practices #Code_Readability
👤 Developix
💎 Channel: @DevelopixPythonRepost from ابر ویراک
⭕️ ویراک کلود
زیرساختی مطمئن برای کسب و کارهای آنلاین
🎁 20% شارژ بیشتر روی اولین واریزی
⚡️با کد معرف: 10% شارژ برای شما و 10% برای دوستتان!
🔘با IPv6 رایگان
🔘با IP مازاد
🔘تست رایگان 2 روزه
🔘فایروال اختصاصی
🔘با API برای حرفهای ها
🔘پشتیبانی 24 ساعته
🔘آپلود رایگان
📞 همین حالا با ما تماس بگیرید و این فرصت فوقالعاده رو از دست ندید!
🔻02191555530
🌐Virakcloud.com
FastAPI یه فریمورک مدرن برای ساخت Web API تو پایتونه که کامل روی type hints سوار شده و برای ساخت سرویسهای سریع و قابل نگهداری عالیه. بر پایه Starlette و Pydantic ساخته شده و روی ASGI اجرا میشه.
چرا مفیده؟
• سرعت خیلی بالا (نزدیک به Node و Go) 🚀
• داکیومنتیشن خودکار OpenAPI و Swagger UI بدون هیچ کار اضافه
• اعتبارسنجی ورودیها با type hint و Pydantic
• پشتیبانی راحت از async / await برای I/O سنگین (DB، HTTP call و...)
نمونهی استفاده:
from fastapi import FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: float
app = FastAPI()
@app.post("/items")
async def create_item(item: Item):
return {"message": f"created {item.name}", "price": item.price}
این سبک برای ساخت microserviceها، backend موبایل، سرویس داخلی شرکت، و APIهای دادهمحور خیلی جواب میده؛ هم سریع توسعه میدی هم مستندات تمیز و قابل تست تحویل میدی.
Docs رسمی:
https://fastapi.tiangolo.com
GitHub:
https://github.com/tiangolo/fastapi
امتحانش کن روی یه API کوچک داخلی؛ معمولاً بعد از یه پروژه کامل بهش عادت میکنی 😄
🔖 #Python #پایتون #FastAPI #Python #Backend #API #Web
👤 Developix
💎 Channel: @DevelopixPythonRepost from ابر ویراک
⭕️ ویراک کلود
زیرساختی مطمئن برای کسب و کارهای آنلاین
🎁 20% شارژ بیشتر روی اولین واریزی
⚡️با کد معرف: 10% شارژ برای شما و 10% برای دوستتان!
🔘با IPv6 رایگان
🔘با IP مازاد
🔘تست رایگان 2 روزه
🔘فایروال اختصاصی
🔘با API برای حرفهای ها
🔘پشتیبانی 24 ساعته
🔘آپلود رایگان
📞 همین حالا با ما تماس بگیرید و این فرصت فوقالعاده رو از دست ندید!
🔻02191555530
🌐Virakcloud.com
در قطعهکد زیر از ویژگی late binding در closureهای پایتون و همینطور از عملگر is روی اعداد استفاده شده است.
خروجی اجرای این کد (خطوط چاپشده در ترمینال) دقیقا چه خواهد بود؟
پاسخ را دقیقا مطابق خروجی نهایی بنویسید.
🔖 #Python #پایتون
👤 Developix
💎 Channel: @DevelopixPython
در کد زیر سعی شده با استفاده از یک decorator ساده، تعداد دفعات صدا زده شدن هر تابع در یک دیکشنری سراسری ذخیره شود، اما بهخاطر یک اشتباه در نحوه استفاده از
global، شمارنده بهدرستی عمل نمیکند و ممکن است خطا یا رفتار اشتباه داشته باشد.
سوال:
در این کد چه چیزی باید اصلاح شود تا شمارندهٔ فراخوانی توابع بهدرستی کار کند و call_counts بدون خطا و به شکل صحیح بهروزرسانی شود؟
call_counts = {}
def count_calls(func):
def wrapper(*args, **kwargs):
global call_counts
if func.__name__ not in call_counts:
call_counts = {}
call_counts[func.__name__] = call_counts.get(func.__name__, 0) + 1
return func(*args, **kwargs)
return wrapper
@count_calls
def slow_add(a, b):
return a + b
for _ in range(3):
slow_add(1, 2)
print(call_counts)
🔖 #Python #پایتون
👤 Developix
💎 Channel: @DevelopixPythonFastAPI یکی از محبوبترین فریمورکهای مدرن برای ساخت REST API با Python است؛ سریع، تایپمحور و کاملا async-friendly 🚀
با FastAPI میشود خیلی سریع میکروسرویس، backend برای موبایل یا API برای مدلهای ML ساخت؛ بدون اینکه درگیر boilerplate زیاد شد.
چرا FastAPI؟
• استفاده از type hints پایتون و تولید خودکار docs با OpenAPI و Swagger UI 📚
• پرفورمنس بالا (روی Starlette و Pydantic)
• اعتبارسنجی ورودیها بهصورت خودکار
• پشتیبانی عالی از async/await و dependency injection
نصب و مثال سریع
pip install fastapi uvicorn
# main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/hello")
async def read_hello(name: str = "dev"):
return {"message": f"Hello {name}!"}
# اجرا:
# uvicorn main:app --reload
برای پروژههای جدیدی که نیاز به API سریع، تمیز و قابل توسعه دارند، امتحان FastAPI کاملا میارزد ✨
مستندات رسمی:
Docs
GitHub
🔖 #Python #پایتون #Python #FastAPI #Backend #API #وب
👤 Developix
💎 Channel: @DevelopixPython📌 امروز یک اسکریپت کاملاً کاربردی میسازیم: اسکن یک پوشه، پیدا کردن فایلها، و خروجی گرفتن یک گزارش CSV با Python.
سناریو واقعی 👇
فرض کن روی سرور یا سیستم خودت هزاران فایل داری و میخواهی:
- اسم همهی فایلها
- سایز هر فایل
- تاریخ آخرین تغییر
رو بهصورت یک گزارش تمیز در یک فایل CSV داشته باشی تا بعداً با Excel یا pandas تحلیلش کنی.
این کار را با ماژولهای استاندارد os و pathlib و csv انجام میدهیم، کاملاً بدون وابستگی خارجی. برای جزئیات بیشتر هم میشود به مستندات رسمی Python سر زد:
os
pathlib
csv
💡 ایده کلی
یک مسیر ورودی میگیریم (مثلاً یک پوشه پروژه، یا فولدر logs سرور)، روی کل زیرپوشهها loop میزنیم، اطلاعات هر فایل را میخوانیم و در یک فایل
report.csv ذخیره میکنیم.
نمونه کد کامل:
import os
from pathlib import Path
import csv
from datetime import datetime
def scan_directory(root_dir: str, output_csv: str = "report.csv") -> None:
root_path = Path(root_dir).expanduser().resolve()
if not root_path.exists() or not root_path.is_dir():
raise ValueError(f"مسیر نامعتبر است: {root_path}")
rows = []
for dirpath, dirnames, filenames in os.walk(root_path):
for name in filenames:
file_path = Path(dirpath) / name
stat = file_path.stat()
size_bytes = stat.st_size
mtime = datetime.fromtimestamp(stat.st_mtime)
rows.append({
"path": str(file_path),
"size_bytes": size_bytes,
"modified_at": mtime.isoformat(timespec="seconds"),
})
with open(output_csv, "w", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=["path", "size_bytes", "modified_at"])
writer.writeheader()
writer.writerows(rows)
print(f"گزارش ساخته شد: {output_csv} ({len(rows)} فایل)")
if __name__ == "__main__":
# مثال: اسکن پوشه جاری
scan_directory(".")
نکتهها و کاربردهای واقعی 🔍
- این اسکریپت روی هر سیستم دارای Python 3 اجرا میشود، بدون نصب پکیج اضافه.
- خروجی report.csv را میتوانی مستقیم با pandas بخوانی و روی آن تحلیل اندازه فایلها، پیدا کردن فایلهای خیلی بزرگ، یا مانیتور کردن growth یک فولدر انجام بدهی.
- برای مسیرهای حجیم، بهتر است روی دیسکهای شبکهای کمی حوصله داشته باشی؛ os.walk همه چیز را میگردد.
یک بار روی پوشه پروژهات اجرا کن، نتیجهاش معمولاً شگفتانگیز است 🤓
اگر مفید بود، برای بقیه پایتونیستها هم بفرست تا آنها هم از این اسکریپت ساده اما کاربردی استفاده کنند.
🔖 #Python #پایتون #Python #Automation #Filesystem #Script #CSV #pandas
👤 Developix
💎 Channel: @DevelopixPython
Endi mavjud! Telegram Tadqiqoti 2025 — yilning asosiy insaytlari 
