Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
177 - Telegram Web
Telegram Web
خروجی کد بالا چیست؟
Anonymous Quiz
17%
new text
69%
old text
8%
None
5%
Error
🔥13
🏆امروز آخرین کوئیز مبحث ارجاع متغیر رو داریم

خروجی کد زیر چیست؟
def replace_list(items):
items = [100, 200]

my_list = [1, 2, 3]
replace_list(my_list)
print(my_list)

توی کوئیز پست بعد پاسخ بدید
13
👍15
الگوهای طراحی یا Design Patterns چیست و چرا مهمه؟
تا حالا شده حس کنید یک مشکل رو دارید برای چندمین بار حل می‌کنید؟ مثلاً مدیریت تنظیمات برنامه یا ساختن آبجکت‌های پیچیده؟

الگوهای طراحی، مثل دستور پخت غذاهای معروف اند! 🍝
اونا راه‌حل‌های تست‌شده، بهینه و قابل استفاده مجدد برای مشکلات تکراری در مهندسی نرم‌افزار هستند. به جای اینکه هر بار چرخ رو از اول اختراع کنیم، از تجربه و خرد جمعی برنامه‌نویسان حرفه‌ایِ سراسر جهان استفاده می‌کنیم.

چرا باید یادشون بگیریم؟
زبان مشترک: به شما و تیم‌تون یک زبان مشترک برای بحث در مورد راه‌حل‌ها می‌ده.
کد تمیزتر: کد شما رو خواناتر، قابل نگهداری‌تر و انعطاف‌پذیرتر می‌کنه.
حل سریع‌تر مشکلات: با شناخت الگوها، راه‌حل‌های استاندارد همیشه در ذهن شماست.

الگوهای طراحی به سه دسته اصلی تقسیم می‌شن که در پست‌های بعدی هر کدوم رو بررسی می‌کنیم:
الگوهای ایجادی (Creational)
الگوهای رفتاری (Behavioral)
الگوهای ساختاری (Structural)

منتظر پست بعدی باشید!

@pythopiachannel
1🔥13👏31
الگو های طراحی ـ قسمت دوم

🏗️ الگوهای ایجادی (Creational Patterns)

در دومین بخش از سری الگوهای طراحی، به سراغ الگوهای ایجادی می‌رویم.
🎯 هدف این الگوها چیست؟ این الگوها به فرآیند ساخت آبجکت‌ها (Object Creation) مربوط می‌شن. اون‌ها به ما کمک می‌کنن تا آبجکت‌ها رو به شکلی بسازیم که کد ما انعطاف‌پذیر باشه و به روش ساخت یک آبجکت خاص وابسته نباشه.
به زبان ساده، مثل اینه که شما انواع مختلفی از کارخونه‌ها برای تولید محصولات متفاوت داشته باشید.


چند مثال معروف:

Singleton (تک‌نمونه): تضمین می‌کنه که از یک کلاس، فقط و فقط یک نمونه در کل برنامه وجود داشته باشه. (مثال کد در پست قبلی)

Factory Method (متد کارخانه): به
یک کلاس اجازه می‌ده تا مسئولیت ساخت آبجکت رو به زیرکلاس‌های خودش واگذار کنه. مثل کارخونه ماشین‌سازی که مدل‌های مختلفی از ماشین رو تولید می‌کنه.

Builder (سازنده): فرآیند ساخت یک آبجکت پیچیده رو از نمایش نهایی اون جدا می‌کنه. مثل وقتی که یک ساندویچ رو مرحله به مرحله و با مواد دلخواه خودتون می‌سازید.

در پست بعدی، الگوهای رفتاری رو بررسی خواهیم کرد.

@pythopiachannel
👏13
الگوهای طراحی-قسمت سوم

الگوهای رفتاری (Behavioral Patterns) 🗣️

در سومین بخش، به بررسی الگوهای رفتاری می‌پردازیم.
🎯 هدف این الگوها چیست؟ این الگوها روی الگوریتم‌ها و نحوه ارتباط و همکاری بین آبجکت‌ها تمرکز دارن. اون‌ها مشخص می‌کنن که آبجکت‌ها چطور با هم صحبت کنن و وظایف رو بین خودشون تقسیم کنن.
مثل طراحی روش‌های مختلف برای کار گروهی و ارتباط بین اعضای یک تیم.

چند مثال معروف:

Observer (ناظر): وقتی یک آبجکت تغییر حالت می‌ده، تمام وابستگانش (ناظران) به طور خودکار خبردار می‌شن. دقیقاً مثل مشترک شدن (Subscribe) در یک کانال یوتیوب.

Strategy (استراتژی): به شما اجازه می‌ده چند الگوریتم مختلف رو در کلاس‌های جداگانه تعریف کنید و در زمان اجرا، هر کدوم رو که خواستید انتخاب و استفاده کنید. مثل داشتن روش‌های پرداخت مختلف (کارت به کارت، درگاه آنلاین، پی‌پال).

Command (فرمان): یک درخواست رو به یک آبجکت مستقل تبدیل می‌کنه. مثل سفارش غذا در رستوران که به عنوان یک "تیکت سفارش" از گارسون به آشپز منتقل می‌شه.

در پست آخر، به سراغ الگوهای ساختاری خواهیم رفت.

@pythopiachannel
15
الگوهای ساختاری (Structural Patterns) 🏛️

در آخرین بخش از سری الگوهای طراحی، به الگوهای ساختاری می‌پردازیم.

🎯 هدف این الگوها چیست؟ این الگوها به ما نشون می‌دن که چطور کلاس‌ها و آبجکت‌ها رو با هم ترکیب کنید تا ساختارهای بزرگتر ولی انعطاف‌پذیر بسازیم.
تمرکز اصلی اون‌ها روی ساده‌سازی ساختار و روابط بین اجزاست.
مثل استفاده از قطعات لگو برای ساختن سازه‌ها. 🧱

چند مثال معروف:

Decorator (تزئین‌گر): به شما اجازه می‌ده تا بدون تغییر در کد یک کلاس، قابلیت‌های جدیدی رو در زمان اجرا به آبجکت‌های اون اضافه کنید. مثل اضافه کردن تاپینگ‌های مختلف به بستنی.

Adapter (آداپتور): به دو آبجکت با اینترفیس‌های ناسازگار اجازه می‌ده تا با هم کار کنن. دقیقاً مثل آداپتور برق که دوشاخه اروپایی شما رو به پریز آمریکایی وصل می‌کنه.

Facade (نما): یک رابط ساده و یکپارچه برای یک مجموعه بزرگ و پیچیده از کدها (مثل یک کتابخانه) فراهم می‌کنه. مثل دکمه "روشن/خاموش" در یک سیستم سینمای خانگی پیچیده.

امیدواریم این سری پست‌ها بهتون در درک بهتر الگوهای طراحی کمک کرده باشه. یادگیری این الگوها یک گام بزرگ در مسیر حرفه‌ای شدنه!


@pythopiachannel
🔥85🏆2
🔔کوئیز الگو های طراحی🧩
11
آشنایی با رفتگرِ پایتون 🧹

تاحالا فکر کردین وقتی کارمون با یه متغیر تموم می‌شه، چه بلایی سر حافظه‌ای که گرفته میاد؟

اینجا سر و کله‌ی «رفتگر» پایتون یا همون Garbage Collector (GC) پیدا می‌شه!
حافظه‌ی کامپیوتر رو یه اتاق بزرگ در نظر بگیرین. هر متغیر، یه جعبه‌ست که یه گوشه از اتاق رو گرفته. اگه قرار بود جعبه‌های قدیمی هیچوقت دور ریخته نشن، اتاق خیلی زود به هم می‌ریخت و جا کم میومد.

کارِ رفتگر پایتون اینه که بی‌سروصدا توی اتاق بچرخه و این جعبه‌های بلا استفاده رو پیدا کنه و بندازه بیرون تا جا برای جعبه‌های جدید باز بشه. اینطوری جلوی پر شدن الکی حافظه (Memory Leak) و کندی برنامه گرفته می‌شه.

تو قسمت بعد می‌گیم که این رفتگرِ زرنگ چطوری جعبه‌های بی‌مصرف رو تشخیص می‌ده!

تجربیات و نظراتتون رو با لایک و کامنت به ما بگید🌱
@pythopiachannel
🔥124
This media is not supported in your browser
VIEW IN TELEGRAM
💻👀🫵🏽
به زودی در دو بخش متفاوت ....
@pythopiachannel
8🔥4
🧩Design Patterns Quiz🏆
🔥10
شما یک سیستم پیچیده با اجزای داخلی زیاد دارید. برای اینکه کار با این سیستم را برای دیگران ساده کنید و یک رابط کاربری ساده برای آن فراهم کنید از کدام الگو استفاده می‌کنید؟
Anonymous Quiz
27%
decorator
16%
strategy
38%
facade
20%
builder
🔥10
آرگومان‌های موقعیتی (Positional) و کلیدواژه‌ای (Keyword)

وقتی یک تابع را در پایتون صدا می‌زنیم، می‌توانیم مقادیر را به دو روش اصلی به آن بدهیم.

۱. آرگومان‌های موقعیتی (Positional)

در این روش، مقادیر بر اساس موقعیت یا ترتیب به پارامترهای تابع اختصاص داده می‌شوند. اولین مقدار به اولین پارامتر، دومی به دومی و...

ویژگی اصلی: ترتیب اهمیت حیاتی دارد.

۲. آرگومان‌های کلیدواژه‌ای (Keyword)

ویژگی اصلی: ترتیب دیگر مهم نیست، چون پایتون از روی نام، مقدار را به پارامتر درست اختصاص می‌دهد. این روش خوانایی کد را بالا می‌برد.

۳.قانون طلایی: ترکیب دو روش

می‌توانید از هر دو روش با هم استفاده کنید، اما همیشه آرگومان‌های موقعیتی باید قبل از آرگومان‌های کلیدواژه‌ای بیایند.

مثال:
def show_info(name, age, city):
print(f"Name: {name}", f"Age: {age}", f"City: {city}")


#آرگومان موقعیتی
show_info("Fateme", 23, "Tehran")

#آرگومان کلیدواژه‌ای
show_info(name="Ali", city="Shiraz", age=30)

#ترکیب (اول موقعیتی، بعد کلیدواژه‌ای)
show_info("Sara", age=19, city="Tabriz")

خروجی رو کامنت کنید.

@pythopiachannel
10👏3
اصل DRY - تنبل‌ترین برنامه‌نویس‌ها، بهترین برنامه‌نویس‌ها هستند!

امروز می‌خوایم در مورد یکی از مهم‌ترین اصول برنامه‌نویسی صحبت کنیم که شما رو به یک توسعه‌دهنده بهتر تبدیل می‌کنه: اصل DRY یا Don't Repeat Yourself (خودت را تکرار نکن).

DRY یعنی چی؟ 🤔

اصل DRY خیلی ساده می‌گه: کد تکراری ننویس! اگر یک قطعه کد رو در چند جای مختلف کپی-پیست کردی، داری این اصل مهم رو زیر پا می‌ذاری.

چرا نباید خودمون رو تکرار کنیم؟


تو پست بعدی با مثال بررسی میکنیم.
@pythopiachannel
👏8🔥51
بیاید با یک مثال ببینیم. فرض کنید در یک فروشگاه آنلاین، می‌خوایم قیمت نهایی دو محصول رو با احتساب ۹٪ مالیات حساب کنیم.

روش اشتباه و تکراری (روش WET 💧 - Write Everything Twice):
Python

# محاسبه قیمت محصول اول
price1 = 10000
tax1 = price1 * 0.09
final_price1 = price1 + tax1
print(f"قیمت نهایی محصول ۱: {final_price1}")

# محاسبه قیمت محصول دوم
price2 = 50000
tax2 = price2 * 0.09
final_price2 = price2 + tax2
print(f"قیمت نهایی محصول ۲: {final_price2}")

می‌بینید که منطق محاسبه مالیات (ضربدر ۰.۰۹) تکرار شده. حالا اگه مالیات بشه ۱۰٪، باید بگردیم و همه اینا رو دستی عوض کنیم!
روش درست و تمیز (روش DRY 🌵):

اینجا منطق تکراری رو توی یک تابع می‌ذاریم.

Python

def calculate_final_price(price):
"""قیمت نهایی را با احتساب ۹٪ مالیات محاسبه می‌کند."""
tax = price * 0.09
return price + tax

# حالا فقط تابع رو صدا می‌زنیم
final_price1 = calculate_final_price(10000)
print(f"قیمت نهایی محصول ۱: {final_price1}")

final_price2 = calculate_final_price(50000)
print(f"قیمت نهایی محصول ۲: {final_price2}")


عالی شد! حالا اگه نرخ مالیات تغییر کنه، فقط و فقط یک خط داخل تابع calculate_final_price رو تغییر می‌دیم و همه‌چیز درست کار می‌کنه.
مزایای DRY بودن:

نگهداری آسان‌تر: تغییرات فقط در یک نقطه اعمال می‌شه.

کاهش خطا: ریسک فراموش کردن آپدیت کد تکراری از بین می‌ره.

کد خواناتر و کوتاه‌تر: کد شما تمیزتر و قابل فهم‌تر می‌شه.

پس همیشه یادتون باشه: یک برنامه‌نویس خوب، تنبله! تنبل از این جهت که کار تکراری انجام نمی‌ده و برای هر چیزی یک راه حل هوشمندانه و مرکزی پیدا می‌کنه.😌

@pythopiachannel
🔥9🆒51
دکوراتور | Decorator

تصور کنید یک کادو خریدید و می‌خواید اون رو خوشگل‌تر کنید. چیکار می‌کنید؟ کادوپیچش می‌کنید! 🎁 دکوراتورها توی پایتون دقیقاً همین کار رو با توابع ما می‌کنن.

دکوراتور یک تابع خاصه که یک تابع دیگه رو به عنوان ورودی می‌گیره و بدون اینکه کد اصلی اون تابع رو تغییر بده، یک قابلیت جدید بهش اضافه می‌کنه و در نهایت، همون تابع رو با قابلیت جدید برمی‌گردونه.

به چه دردی می‌خوره؟

یک مثال معروف اندازه‌گیری زمان اجرای توابع است.

فرض کنید چندتا تابع مختلف دارید و می‌خواید زمان اجرای هر کدوم رو اندازه بگیرید. اولین راهی که به ذهن میاد اینه که توی تک‌تک توابع، قبل و بعد از اجرای کد اصلی، زمان رو ثبت و اختلافش رو حساب کنیم. این کار شدنیه، ولی خیلی تکراری و خسته‌کننده‌ است و اصل DRY (Don't Repeat Yourself) رو نقض می‌کنه.

اینجاست که دکوراتورها مثل یک قهرمان وارد می‌شن! 🦸‍♂️
@pythopiachannel
1🔥95
بریم سراغ یک مثال ساده: لاگ گرفتن از زمان اجرا

بیاید یک دکوراتور بنویسیم که زمان اجرای هر تابعی رو که بهش بدیم، حساب کنه و چاپ کنه.

import time

# 👇 این دکوراتور ماست
def timing_decorator(func):
def wrapper():
start_time = time.time()
func() # اجرای تابع اصلی
end_time = time.time()
print(f"'{func.__name__}' در {end_time - start_time:.2f} ثانیه اجرا شد.")
return wrapper

# 👇 به همین راحتی ازش استفاده می‌کنیم
@timing_decorator
def slow_function():
time.sleep(2) # شبیه‌سازی یک کار زمان‌بر
print("کار انجام شد!")

# تابع رو صدا می‌زنیم
slow_function()


خروجی:
کار انجام شد!
'slow_function' در 2.00 ثانیه اجرا شد.

اگه سوالی راجع به دکوریتورها دارید می‌تونید توی کامنت‌ها بپرسید. ما همه رو می‌خونیم و جواب می‌دیم😌

@pythopiachannel
1👍112😢1
☕️با هزینه یه قهوه، یاد بگیر چطور با هوش مصنوعی پیچیده ترین ایده‌هات رو زنده کنی!

اگه تو هم نمی‌تونی منظورت رو به هوش مصنوعی بفهمونی و مسائل پیچیده رو باهاش حل کنی، نگران نباش، این طبیعیه و ما اینجاییم تا بهت راه رو نشون بدیم.

مهندسی پرامپت، کلیدیه که بهت کمک می‌کنه از AI خروجی های خیره کننده بگیری.

توی این وبینار فشرده، فقط توی دو روز جدیدترین تکنیک های پیشرفته برای بهتر کردن دقت AI، امنیت پرامپت و پروژه‌های عملی با Hugging Face رو یاد می‌گیری و تا پنج برابر پاسخ بهتری از مدل های زبانی بزرگ میگیری.


🎁آموزش پرامپت‌نویسی حرفه‌ای برای ساخت عکس و ویدیو (زاویه دوربین، نورپردازی، سبک هنری و تکنیک‌های سینمایی)

🕕پنجشنبه و جمعه | ۱۰ و ۱۱ مهر ۱۴۰۴
ساعت ۱۵ الی ۱۷

هزینه ثبت‌نام
دانشجویان و دانش آموزان: ۲۰۰ هزار تومان
دانشجویان الزهرا: ۱۴۰ هزار تومان
عموم: ۲۷۰ هزار تومان

📥اطلاعات بیشتر و ثبت‌نام
support: @pythopia
👏101👎1
2025/10/13 03:03:06
Back to Top
HTML Embed Code: