Python3
200 subscribers
100 photos
6 videos
26 files
518 links
🎓 آموزش و پروژه‌های Python
آموزش‌های کاربردی و پروژه‌های عملی Python برای همه سطوح. 🚀
Download Telegram
استفاده از کلاس‌ها در پایتون: از ساده‌ترین تا پیچیده‌ترین روش‌ها

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

1. روش ساده: ایجاد یک کلاس برای مدیریت حساب بانکی

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

# روش ساده برای استفاده از کلاس‌ها در پایتون

class BankAccount:
def __init__(self, initial_balance=0):
self.balance = initial_balance

def deposit(self, amount):
self.balance += amount
print(f"Deposited {amount}, new balance is {self.balance}")

def withdraw(self, amount):
if amount <= self.balance:
self.balance -= amount
print(f"Withdrew {amount}, new balance is {self.balance}")
else:
print("Insufficient funds")

# ایجاد یک حساب بانکی با موجودی اولیه 100
account = BankAccount(100)

# واریز 50 به حساب
account.deposit(50)

# برداشت 30 از حساب
account.withdraw(30)

# تلاش برای برداشت 150 از حساب (موجودی کافی نیست)
account.withdraw(150)

در این مثال:
1. کلاس BankAccount تعریف شده است که دارای متد سازنinitit__)، متد deposit برای واریز پول و متد withdraw برای برداشت پول است.
2. یک حساب بانکی ایجاد می‌شود و عملیات واریز و برداشت روی آن انجام می‌شود. 💰

2. روش پیچیده: ایجاد یک کلاس با ویژگی‌ها و متدهای پیشرفته

در این روش، کلاس پیچیده‌تری را برای مدیریت حساب بانکی ایجاد می‌کنیم که شامل ویژگی‌های بیشتر و متدهای پیشرفته‌تری است.

# روش پیچیده‌تر برای استفاده از کلاس‌ها در پایتون

class BankAccount:
def __init__(self, initial_balance=0):
self.balance = initial_balance
self.transactions = []

def deposit(self, amount):
self.balance += amount
self.transactions.append(f"Deposited {amount}")
print(f"Deposited {amount}, new balance is {self.balance}")

def withdraw(self, amount):
if amount <= self.balance:
self.balance -= amount
self.transactions.append(f"Withdrew {amount}")
print(f"Withdrew {amount}, new balance is {self.balance}")
else:
self.transactions.append(f"Failed withdrawal of {amount}")
print("Insufficient funds")

def get_balance(self):
return self.balance

def get_transactions(self):
return self.transactions

# ایجاد یک حساب بانکی با موجودی اولیه 200
account = BankAccount(200)

# واریز 100 به حساب
account.deposit(100)

# برداشت 50 از حساب
account.withdraw(50)

# تلاش برای برداشت 300 از حساب (موجودی کافی نیست)
account.withdraw(300)

# نمایش موجودی حساب
print(f"Current balance is {account.get_balance()}")

# نمایش تراکنش‌ها
print("Transactions:")
for transaction in account.get_transactions():
print(transaction)

در این مثال:
1. کلاس BankAccount دارای ویژگی‌های اضافی مانند لیست تراکنش‌ها (transactions) است.
2. متدهای اضافی برای گرفتن موجودی (get_balance) و نمایش تراکنش‌ها (get_transactions) اضافه شده است.
3. عملیات واریز و برداشت به تراکنش‌ها اضافه می‌شود و در صورت ناکافی بودن موجودی، تراکنش ناموفق ثبت می‌شود. 📜

با این دو مثال، شما می‌توانید تفاوت بین استفاده ساده و پیچیده از کلاس‌ها در پایتون را ببینید. بسته به نیاز پروژه‌تان، می‌توانید روش مناسب را انتخاب کنید.

🔻اینجا کلیک کن تا بیشتر یاد بگیری

#Python #Classes #OOP #Programming #LearnPython #PythonClasses #BankAccount #AdvancedPython
👍5
Forwarded from گوربه
پردازش موازی پیشرفته در پایتون: استفاده از concurrent.futures برای بهره‌وری بیشتر 🚀

مقدمه:
برای توسعه‌دهندگان سطح سینیور که به دنبال بهینه‌سازی کد و افزایش کارایی برنامه‌های خود هستند، پردازش موازی می‌تواند یک ابزار قدرتمند باشد. یکی از کتابخانه‌های داخلی پایتون که این امکان را فراهم می‌کند، concurrent.futures است. این کتابخانه به شما اجازه می‌دهد تا وظایف را به صورت همزمان اجرا کنید و از چندین هسته CPU بهره ببرید.

پردازش موازی با concurrent.futures:
ایجاد و اجرای وظایف موازی:ابتدا باید ThreadPoolExecutor یا ProcessPoolExecutor را برای اجرای وظایف موازی انتخاب کنید. ThreadPoolExecutor برای وظایفی که نیاز به I/O دارند مناسب است، در حالی که ProcessPoolExecutor برای وظایف محاسباتی سنگین بهتر عمل می‌کند.


    from concurrent.futures import ThreadPoolExecutor, as_completed
import time

def task(n):
print(f"Processing {n}")
time.sleep(2)
return n * n

numbers = [1, 2, 3, 4, 5]
results = []

with ThreadPoolExecutor(max_workers=3) as executor:
futures = [executor.submit(task, num) for num in numbers]
for future in as_completed(futures):
results.append(future.result())

print("Results:", results)

2. مزایای استفاده از concurrent.futures:ساده‌سازی مدیریت وظایف:با استفاده از futures، می‌توانید به راحتی نتایج وظایف موازی را مدیریت کنیبهره‌وری بیشتر:با توزیع وظایف بین چندین هسته، می‌توانید کارایی برنامه‌های خود را افزایش دهیکد خواناتر: استفاده از ThreadPoolExecutor و ProcessPoolExecutor کد را خواناتر و قابل فهمتراستفاده پیشرفته‌تر:

برای استفاده پیشرفته‌تر از concurrent.futures، می‌توانید از ترکیب ThreadPoolExecutor و ProcessPoolExecutor استفاده کنید تا بهترین عملکرد را برای وظایف مختلف بدست آورید.

from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor

def io_task(n):
print(f"IO Task {n}")
time.sleep(2)
return n + n

def cpu_task(n):
print(f"CPU Task {n}")
return sum(i*i for i in range(n))

numbers = [10, 20, 30, 40, 50]

with ThreadPoolExecutor(max_workers=3) as io_executor, ProcessPoolExecutor(max_workers=3) as cpu_executor:
io_futures = [io_executor.submit(io_task, num) for num in numbers]
cpu_futures = [cpu_executor.submit(cpu_task, num) for num in numbers]

for future in as_completed(io_futures + cpu_futures):
print(f"Result: {future.result()}")

فواید:افزایش کارایی:پردازش موازی می‌تواند به طور چشمگیری کارایی برنامه‌ها را افزامدیریت آسان وظایف: استفاده از concurrent.futures مدیریت وظایف موازی را بسیار ساده‌تمعایب:- پیچیدگی دیباگ: دیباگ کردن کدهای موازی می‌تواند پیچیده‌تمصرف منابع: استفاده نادرست از پردازش موازی می‌تواند منجر به مصرف زیاد منابع شود.

برای دریافت آموزش‌های بیشتر و نکات پیشرفته در زمینه برنامه‌نویسی، حتماً به کانال تلگرام ما بپیوندید! 💻📱

#Python #Concurrency #ParallelProcessing #AdvancedPython #ProgrammingTips #CodeOptimization
👍2
مدیریت فایل‌ها با os و shutil در پایتون

مقدمه:
مدیریت فایل‌ها و دایرکتوری‌ها یکی از مهارت‌های اساسی برای هر برنامه‌نویس پایتون است. دو ماژول مهم و کاربردی که در این زمینه استفاده می‌شوند، os و shutil هستند. این ماژول‌ها ابزارهایی را فراهم می‌کنند که به راحتی بتوانید فایل‌ها و پوشه‌ها را ایجاد، حذف، جابجا و کپی کنید.

مدیریت دایرکتوری‌ها:

1. ایجاد دایرکتوری:
با استفاده از تابع mkdir از ماژول os می‌توانید دایرکتوری جدیدی ایجاد کنید.


    import os

os.mkdir('new_directory')

2. حذف دایرکتوری:
برای حذف یک دایرکتوری خالی، از تابع rmdir استفاده کنید.


    os.rmdir('new_directory')

3. ایجاد مسیرهای چندگانه:
برای ایجاد مسیرهای چندگانه، از makedirs استفاده کنید.


    os.makedirs('parent_directory/child_directory')

مدیریت فایل‌ها:

1. ایجاد فایل:
برای ایجاد یک فایل جدید و نوشتن در آن، می‌توانید از تابع open استفاده کنید.


    with open('file.txt', 'w') as file:
file.write('Hello, World!')

2. حذف فایل:
برای حذف یک فایل، از remove استفاده کنید.


    os.remove('file.txt')

3. جابجایی و کپی فایل‌ها:
ماژول shutil ابزارهای مفیدی برای جابجایی و کپی فایل‌ها فراهم می‌کند.


    import shutil

shutil.move('source.txt', 'destination.txt')
shutil.copy('source.txt', 'destination.txt')

کاربردهای پیشرفته:

ماژول‌های os و shutil امکانات بیشتری نیز فراهم می‌کنند، از جمله تغییر نام فایل‌ها، بررسی وجود فایل یا دایرکتوری و دسترسی به جزئیات فایل‌ها.

# تغییر نام فایل
os.rename('old_name.txt', 'new_name.txt')

# بررسی وجود فایل
if os.path.exists('file.txt'):
print('File exists')

# دسترسی به جزئیات فایل
file_info = os.stat('file.txt')
print(f'Size: {file_info.st_size} bytes')

فواید و معایب:
- فواید:
- مدیریت آسان: ماژول‌های os و shutil مدیریت فایل‌ها و دایرکتوری‌ها را بسیار ساده می‌کنند.
- قابلیت‌های پیشرفته: این ماژول‌ها قابلیت‌های پیشرفته‌ای را برای کار با سیستم فایل فراهم می‌کنند.
- معایب:
- سازگاری سیستم‌عامل: برخی توابع ممکن است در سیستم‌عامل‌های مختلف رفتار متفاوتی داشته باشند.
- پیچیدگی کد: استفاده نادرست از این ماژول‌ها می‌تواند منجر به پیچیدگی و خطاهای غیرمنتظره در کد شود.

برای یادگیری بیشتر در مورد برنامه‌نویسی پایتون و نکات پیشرفته، به کانال تلگرام ما بپیوندید!

#Python #FileManagement #OSModule #Shutil #ProgrammingTips #CodeOptimization #AdvancedPython
👍7
۱. ساخت ابزارهای بررسی کد (Linters)
می‌توانید بررسی کنید که آیا کدی استانداردهای خاصی را رعایت می‌کند یا خیر.

۲. ایجاد ابزارهای بهینه‌سازی کد
کدی که کاربر نوشته است را تغییر دهید تا سریع‌تر اجرا شود.

۳. ساخت ابزارهای تحلیل امنیتی
بررسی کنید که آیا کد شامل الگوهای ناامن است یا نه.

۴. تبدیل کدهای قدیمی به نسخه‌های جدید
مثلاً تغییر کدهایی که برای پایتون ۲ نوشته شده‌اند به نسخه ۳.



تمرین پیشرفته:
۱. ابزاری بنویسید که تمام استفاده‌های متغیر x را در یک فایل پایتون پیدا کند.
۲. برنامه‌ای بسازید که همه حلقه‌های for را به حلقه‌های while تبدیل کند.
۳. ابزاری بنویسید که کدهای طولانی را با دستورهای کوتاه‌تر جایگزین کند.



جمع‌بندی
با درک پیشرفته درخت‌های AST، شما می‌توانید:
- کد را تحلیل و تغییر دهید.
- ابزارهایی مانند مفسر، بهینه‌ساز کد، و بررسی‌کننده استاندارد بنویسید.
- حتی قابلیت‌های جدیدی به زبان پایتون اضافه کنید.

این سطح از آشنایی با AST، مقدمه‌ای عالی برای مراحل بعدی مثل ساخت مفسر است.

🔗 برای آموزش‌های بیشتر، کانال تلگرام ما را دنبال کنید!
[لینک کانال]
#PythonAST #AdvancedPython #CodeOptimization #PythonTools
👍1