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

سلام دوستان! امروز می‌خواهیم به شما مفاهیم پیشرفته شی‌گرایی (Object-Oriented Programming) را معرفی کنیم. اگرچه بسیاری از برنامه‌نویسان حرفه‌ای هستند، اما ممکن است با برخی از مفاهیم پیچیده شی‌گرایی مشکلاتی داشته باشند. بیایید با هم این مفاهیم را یاد بگیریم. 🧠

1. کلاس‌ها و اشیاء (Classes and Objects)
کلاس‌ها بلوک‌های ساختمانی برنامه‌های شی‌گرا هستند و اشیاء نمونه‌هایی از این کلاس‌ها می‌باشند.
class Animal:
def __init__(self, name):
self.name = name

dog = Animal("Dog")

2. وراثت (Inheritance)
وراثت به ما اجازه می‌دهد که ویژگی‌ها و رفتارهای یک کلاس را به کلاس دیگری منتقل کنیم.
class Animal:
def __init__(self, name):
self.name = name

class Dog(Animal):
def bark(self):
print(f"{self.name} is barking!")

dog = Dog("Rex")
dog.bark()

3. چندریختی (Polymorphism)
چندریختی به ما اجازه می‌دهد که از یک واسط واحد برای اشیاء مختلف استفاده کنیم.
class Cat(Animal):
def sound(self):
return "Meow"

class Dog(Animal):
def sound(self):
return "Bark"

def make_sound(animal):
print(animal.sound())

cat = Cat("Kitty")
dog = Dog("Rex")
make_sound(cat)
make_sound(dog)

4. کپسوله‌سازی (Encapsulation)
کپسوله‌سازی به ما کمک می‌کند تا داده‌ها و متدها را در داخل کلاس مخفی کنیم.
class BankAccount:
def __init__(self, balance):
self.__balance = balance

def deposit(self, amount):
self.__balance += amount

def withdraw(self, amount):
if amount <= self.__balance:
self.__balance -= amount
else:
print("Insufficient balance")

def get_balance(self):
return self.__balance

account = BankAccount(1000)
account.deposit(500)
account.withdraw(300)
print(account.get_balance())

5. ترکیب (Composition)
ترکیب به ما اجازه می‌دهد که کلاس‌ها را با هم ترکیب کنیم تا رفتارهای پیچیده‌تری ایجاد کنیم.
class Engine:
def start(self):
print("Engine started")

class Car:
def __init__(self):
self.engine = Engine()

def drive(self):
self.engine.start()
print("Car is moving")

car = Car()
car.drive()

6. متدها و ویژگی‌های کلاس (Class Methods and Properties)
متدها و ویژگی‌های کلاس به ما اجازه می‌دهند که متدها و ویژگی‌های مرتبط با کلاس به صورت کلی تعریف کنیم.
class Employee:
raise_amount = 1.05

def __init__(self, name, salary):
self.name = name
self.salary = salary

def apply_raise(self):
self.salary *= self.raise_amount

@classmethod
def set_raise_amount(cls, amount):
cls.raise_amount = amount

emp1 = Employee("John", 50000)
Employee.set_raise_amount(1.10)
emp1.apply_raise()
print(emp1.salary)

7. روش‌های ایستا (Static Methods)
روش‌های ایستا به ما اجازه می‌دهند که متدهایی را تعریف کنیم که نیازی به نمونه‌سازی کلاس ندارند.
class MathOperations:
@staticmethod
def add(a, b):
return a + b

print(MathOperations.add(5, 3))

8. وراثت چندگانه (Multiple Inheritance)
وراثت چندگانه به ما اجازه می‌دهد که یک کلاس از بیش از یک کلاس پایه ارث‌بری کند.
class A:
def method_a(self):
print("Method A")

class B:
def method_b(self):
print("Method B")

class C(A, B):
pass

c = C()
c.method_a()
c.method_b()



[کانال تلگرام ما ]

پارت 1 از آموزش شی‌گرایی

#شی_گرایی #برنامه_نویسی #آموزش #شی_گرایی_پیشرفته #توسعه_دهندگان #پیشرفت
👍2
📚 آموزش شی‌گرایی پیشرفته - پارت 2

سلام دوستان! در این قسمت ادامه مباحث پیشرفته شی‌گرایی را بررسی می‌کنیم. اگر پارت 1 را مطالعه نکردید، پیشنهاد می‌کنم ابتدا به آن مراجعه کنید. 🌟

9. کلاس‌های انتزاعی (Abstract Classes)
کلاس‌های انتزاعی کلاس‌هایی هستند که نمی‌توانند به صورت مستقیم نمونه‌سازی شوند و باید از آن‌ها ارث‌بری کرد.
from abc import ABC, abstractmethod

class Animal(ABC):
@abstractmethod
def sound(self):
pass

class Dog(Animal):
def sound(self):
return "Bark"

dog = Dog()
print(dog.sound())

10. رابط‌ها (Interfaces)
رابط‌ها مجموعه‌ای از متدهای انتزاعی هستند که باید توسط کلاس‌های پیاده‌سازی‌کننده آن‌ها تعریف شوند. در پایتون به صورت رسمی رابط وجود ندارد، اما می‌توان از کلاس‌های انتزاعی استفاده کرد.
from abc import ABC, abstractmethod

class Flyer(ABC):
@abstractmethod
def fly(self):
pass

class Bird(Flyer):
def fly(self):
print("Bird is flying")

bird = Bird()
bird.fly()

11. ویژگی‌های خصوصی و محافظت‌شده (Private and Protected Attributes)
ویژگی‌های خصوصی با دو آندرلاین و ویژگی‌های محافظت‌شده با یک آندرلاین شروع می‌شوند.
class Person:
def __init__(self, name, age):
self._name = name # Protected attribute
self.__age = age # Private attribute

def get_age(self):
return self.__age

person = Person("Alice", 30)
print(person._name) # دسترسی به ویژگی محافظت‌شده
print(person.get_age()) # دسترسی به ویژگی خصوصی از طریق متد

12. ویژگی‌های کلاس (Class Attributes)
ویژگی‌های کلاس ویژگی‌هایی هستند که به جای اشیاء به کلاس تعلق دارند.
class Employee:
company_name = "Tech Corp" # Class attribute

def __init__(self, name, salary):
self.name = name # Instance attribute
self.salary = salary # Instance attribute

emp1 = Employee("Alice", 70000)
emp2 = Employee("Bob", 80000)

print(emp1.company_name)
print(emp2.company_name)
print(Employee.company_name)

13. بارگذاری مجدد متدها (Method Overloading)
بارگذاری مجدد متدها در پایتون به صورت مستقیم پشتیبانی نمی‌شود، اما می‌توان با استفاده از مقادیر پیش‌فرض و *args این کار را انجام داد.
class MathOperations:
def add(self, a, b, c=0):
return a + b + c

math_ops = MathOperations()
print(math_ops.add(5, 3))
print(math_ops.add(5, 3, 2))

14. بارگذاری مجدد عملگرها (Operator Overloading)
بارگذاری مجدد عملگرها به ما اجازه می‌دهد تا رفتار عملگرها را برای اشیاء سفارشی کنیم.
class Vector:
def __init__(self, x, y):
self.x = x
self.y = y

def __add__(self, other):
return Vector(self.x + other.x, self.y + other.y)

def __repr__(self):
return f"Vector({self.x}, {self.y})"

v1 = Vector(2, 3)
v2 = Vector(4, 5)
v3 = v1 + v2
print(v3)

15. تزریق وابستگی (Dependency Injection)
تزریق وابستگی یک الگوی طراحی است که به ما اجازه می‌دهد وابستگی‌های یک شیء را به جای ایجاد آن‌ها در داخل شیء، از بیرون تزریق کنیم.
class Service:
def do_something(self):
print("Service is doing something")

class Client:
def __init__(self, service):
self.service = service

def perform_action(self):
self.service.do_something()

service = Service()
client = Client(service)
client.perform_action()

امیدوارم این آموزش برای شما مفید باشد! تا آموزش بعدی، موفق و پیروز باشید! 🌟


[اموزش های بیشتر در کانال تلگرام ما]

#شی_گرایی #برنامه_نویسی #آموزش #شی_گرایی_پیشرفته #توسعه_دهندگان #پیشرفت
📝 تمرین شی‌گرایی پیشرفته

یک سیستم مدیریت دانشگاه شامل کلاس‌های زیر ایجاد کنید:
1. Person: کلاس انتزاعی با نام و سن.
2. Student: ارث‌بری از Person، دارای معدل.
3. Professor: ارث‌بری از Person، دارای رشته تخصصی.
4. Course: دارای نام درس و استاد درس (نمونه‌ای از Professor).
5. University: دارای لیست دانشجویان و دروس، متدهای افزودن دانشجو، افزودن درس، و ثبت‌نام دانشجو در درس.

- کلاس Person متد انتزاعی display_info داشته باشد.
- Student و Professor متد display_info را پیاده‌سازی کنند.
- University متدهای add_student، add_course، و enroll_student را پیاده‌سازی کند و بررسی کند که آیا دانشجو قبلاً در درس ثبت‌نام شده است.

موفق باشید! 🌟

#تمرین #شی_گرایی #برنامه_نویسی #چالش #توسعه_دهندگان
2
📚 ترفندهای جالب و کاربردی با حلقه‌ها در پایتون

سلام دوستان! امروز چند ترفند کاربردی با حلقه‌ها در پایتون را معرفی می‌کنیم که می‌توانند برنامه‌نویسی شما را بهبود بخشند. 🌟

1. حلقه‌های تو در تو (Nested Loops)
برای ایجاد ترکیبات مختلف از دو لیست:
colors = ["red", "green", "blue"]
objects = ["ball", "pen"]
for color in colors:
for obj in objects:
print(color, obj)

2. حلقه با else
اجرای بلاک else بعد از اتمام حلقه (در صورتی که با break متوقف نشده باشد):
numbers = [1, 2, 3, 4, 5]
for num in numbers:
if num == 0:
break
else:
print("No zero found!")

3. حلقه‌های لیست (List Comprehensions)
ایجاد لیست با استفاده از حلقه‌ها در یک خط:
squares = [x**2 for x in range(10)]
print(squares)

4. حلقه معکوس
استفاده از حلقه برای پیمایش معکوس:
for i in reversed(range(5)):
print(i)

5. پیمایش چند لیست همزمان
استفاده از zip برای پیمایش همزمان چند لیست:
names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
for name, age in zip(names, ages):
print(name, age)

6. حلقه‌های تودرتو با List Comprehensions
ایجاد لیست‌های تو در تو:
matrix = [[i*j for j in range(5)] for i in range(5)]
print(matrix)

7. فیلتر کردن با List Comprehensions
ایجاد لیست با فیلتر کردن مقادیر:
evens = [x for x in range(10) if x % 2 == 0]
print(evens)

امیدوارم این ترفندها برای شما مفید باشند! 🌟

(به کانال تلگرام ما بپیوندید)

#پایتون #برنامه_نویسی #آموزش #حلقه‌ها #ترفند
2
📚 روش‌های کاربردی برای کاهش حجم کدها در پایتون

سلام دوستان! امروز چند تکنیک کاربردی برای کاهش حجم کدها در پایتون را معرفی می‌کنیم که می‌توانند کدهای شما را تمیزتر و خواناتر کنند. 🚀

1. استفاده از List Comprehensions
به جای استفاده از حلقه‌ها برای ایجاد لیست‌ها:
squares = [x**2 for x in range(10)]

2. استفاده از تابع lambda برای توابع کوچک
به جای تعریف توابع کوچک:
add = lambda x, y: x + y
print(add(5, 3))

3. استفاده از تابع map و filter
برای اعمال توابع روی لیست‌ها:
nums = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x**2, nums))
evens = list(filter(lambda x: x % 2 == 0, nums))

4. استفاده از تابع any و all
برای بررسی شرایط در لیست:
nums = [1, 2, 3, 4, 5]
if any(x > 3 for x in nums):
print("حداقل یک عدد بزرگتر از 3 وجود دارد.")
if all(x > 0 for x in nums):
print("همه اعداد مثبت هستند.")

5. استفاده از متدهای join و split برای دستکاری رشته‌ها
برای ترکیب یا تقسیم رشته‌ها:
words = ["Hello", "world"]
sentence = " ".join(words)
print(sentence)

split_words = sentence.split()
print(split_words)

6. استفاده از شرط‌های کوتاه (Ternary Conditions)
برای نوشتن شرط‌ها در یک خط:
age = 18
status = "adult" if age >= 18 else "minor"
print(status)

7. استفاده از تابع zip برای پیمایش همزمان چند لیست
برای پیمایش همزمان:
names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
for name, age in zip(names, ages):
print(f"{name} is {age} years old")

8. استفاده از مدیریت محتوا با with
برای باز کردن و بستن خودکار فایل‌ها:
with open('file.txt', 'r') as file:
content = file.read()

9. استفاده از تابع enumerate برای پیمایش با اندیس
برای دسترسی به اندیس و مقدار همزمان:
fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits):
print(f"{index}: {fruit}")

10. استفاده از کتابخانه‌های استاندارد
برای انجام کارهای معمول از کتابخانه‌های استاندارد استفاده کنید:
import os

files = os.listdir('.')
print(files)

امیدوارم این روش‌ها برای شما مفید باشند! 🌟

(https://t.iss.one/hamidpython123)

#پایتون #برنامه_نویسی #ترفند #کاهش_حجم_کد #توسعه_دهندگان
👍3
🌟 معرفی htmlpy12 - ابزار پیشرفته‌ی طراحی وب! 🌟

سلام دوستان عزیز! 👋 با افتخار نسخه جدید و پیشرفته htmlpy12 را به شما معرفی می‌کنیم! این نسخه از11 htmlpy با ویژگی‌های بیشتر و قابلیت‌های به‌روزتر آماده شده است تا به شما در ساخت صفحات وب بی‌نظیر کمک کند. 🚀

htmlpy12 چیست؟
htmlpy12 یک ابزار قدرتمند برای تولید و مدیریت کد HTML، CSS و JavaScript است که به صورت دینامیک و قابل توسعه طراحی شده است. این نسخه با بهبودهای فراوان نسبت به نسخه‌های قبلی، امکانات جدیدی را ارائه می‌دهد که برای توسعه وب‌سایت‌های پیچیده و نیازمند به انعطاف بیشتر، بسیار مفید است.

🌟 ویژگی‌های htmlpy12 در مقایسه با htmlpy11fa:
1. انعطاف بیشتر در اضافه کردن عناصر دینامیک: htmlpy12 از امکانات بهبود یافته‌ای برای اضافه کردن تگ‌های HTML و عناصر دیگر به صفحات وب به صورت دینامیک برخوردار است.

2. مدیریت پیشرفته استایل‌ها و اسکریپت‌ها: با htmlpy12، می‌توانید به راحتی استایل‌های CSS و اسکریپت‌های JavaScript را به صفحات خود اضافه کرده و آن‌ها را به صورت فایل‌های مستقل ذخیره کنید.

3. پشتیبانی از کامپوننت‌ها و پلاگین‌ها: htmlpy12 به شما امکان می‌دهد که کامپوننت‌های قابل استفاده مجدد و پلاگین‌ها را به صفحات خود اضافه کنید و از آن‌ها در پروژه‌های مختلف استفاده کنید.

4. امکان استفاده از اسکریپت‌ها و استایل‌های سفارشی: htmlpy12 قابلیت افزودن اسکریپت‌ها و استایل‌های سفارشی را برای شما فراهم می‌آورد تا بتوانید صفحات تعاملی و جذاب‌تری بسازید.

5. نوشتن و ذخیره‌سازی فایل‌های CSS و JavaScript: با htmlpy12، می‌توانید به صورت خودکار فایل‌های CSS و JavaScript خود را نوشته و ذخیره کنید، که این امر به بهبود سازماندهی و توسعه پروژه‌های وب کمک می‌کند.

6. قابلیت تولید کد HTML نهایی: htmlpy12 از قالب‌های پیش‌فرض برای تولید کد HTML نهایی استفاده می‌کند که شامل امکاناتی برای نمایش عناصر دینامیک و کامپوننت‌های ویژه است.

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

🔔 همین حالا htmlpy12 را امتحان کنید و از توانایی‌هایش برای ساخت وب‌سایت‌های خود لذت ببرید!

#htmlpy12 #طراحی_وب #وب_سایت #برنامه_نویسی #کامپوننت #جاوا_اسکریپت #CSS #پلاگین #توسعه_وب #ابزار_وب
👍1
قابلیت‌های ماژول htmlpy12

1. ایجاد نمونه از کلاس HTMLpy12

from htmlpy12 import HTMLpy12

html_builder = HTMLpy12(title="صفحه اصلی")

2. اضافه کردن عناصر HTML

html_builder.add_element("h1", "سلام به htmlpy12! 🌟")
html_builder.add_element("p", "این یک ماژول قدرتمند برای ساخت وب است. 🚀")

3. اضافه کردن استایل‌های CSS به عناصر HTML

html_builder.add_style("h1", color="blue", font_size="24px")
html_builder.add_style("p", font_family="Arial, sans-serif")

4. اضافه کردن استایل‌های CSS سفارشی

custom_css = """
body {
background-color: #f0f0f0;
}
"""
html_builder.add_custom_style(custom_css)

5. اضافه کردن اسکریپت‌های JavaScript

html_builder.add_script('alert("سلام از htmlpy12!");')
html_builder.add_script('console.log("این یک پیام است");')

6. اضافه کردن اسکریپت‌های JavaScript سفارشی

custom_js = """
function greet() {
alert('سلام از htmlpy12!');
}
"""
html_builder.add_custom_script(custom_js)

7. نوشتن فایل‌های CSS و JS

html_builder.write_css_file('style.css')
html_builder.write_js_file('script.js')

8. اضافه کردن پلاگین‌ها

html_builder.add_plugin('<link rel="stylesheet" href="plugin.css">')
html_builder.add_plugin('<script src="plugin.js"></script>')

9. اضافه کردن کامپوننت‌ها

html_builder.add_component('navbar', '<nav>...</nav>', 'nav { ... }', 'function navbarScript() { ... }')

10. تولید کد HTML نهایی

html_code = html_builder.generate_html(css_file='style.css', js_file='script.js')

11. ذخیره کردن کد HTML نهایی در یک فایل

html_builder.save_html("index.html")

خلاصه

این ماژول به شما امکان می‌دهد تا به سادگی صفحات وب حرفه‌ای با استفاده از HTML، CSS و JavaScript بسازید و قابلیت‌های اضافی مانند استفاده از پلاگین‌ها و کامپوننت‌ها را نیز داراست. این امکانات باعث می‌شود که بتوانید به راحتی صفحات وب خود را سفارشی‌سازی کرده و نیازهای خاص خود را پاسخ دهید.
Python3 pinned a file
Python3
htmlpy12.py
❗️برای استفاده از این ماژول یک فایل در دایرکتوری که فایل htmlpy12 داخلش هست میسازید و ذخیره میکنید و هر فایل که بسازید داخل همون دایرکتوری ذخیره می‌شود ✅️

🔴نمونه استفاده از این ماژول 👇

from htmlpy12 import HTMLpy12

HTMLpy12
page = HTMLpy12(title="Example Page")


page.add_element("h1", "Welcome to My Website", style="color: blue;")
page.add_element("p", "This is a demo page created using HTMLpy12.")


page.add_style("h1", font_size="24px", text_align="center")
page.add_style("p", font_family="Arial", padding="10px")


page.add_script('console.log("Hello from JavaScript!");')


page.add_plugin('<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">')


page.add_component("header", html='<header><h2>Header Component</h2></header>', css='header { background-color: #f2f2f2; padding: 10px; }')

JS
page.write_css_file("style.css")
page.write_js_file("script.js")


html_content = page.generate_html(css_file="style.css", js_file="script.js")
print(html_content)


page.save_html("index.html")

❗️با اجرای این کد یک فایل html به نام index.html در دایرکتور خود پروژه ذخیره میشه ✅️
ماژول htmlpy12 امکاناتی را برای اضافه کردن عناصر HTML، استایل‌های CSS و اسکریپت‌های JavaScript به صفحات وب فراهم می‌کند، که می‌توان به دو صورت دینامیکی و یا از طریق استفاده مستقیم از کدها آن‌ها را اعمال کرد. در ادامه، نحوه استفاده از هر دو روش را توضیح می‌دهم:

۱. استفاده دینامیکی

استفاده دینامیکی به این معنی است که شما از طریق توابع و روش‌های ماژول htmlpy12، عناصر HTML، استایل‌ها و اسکریپت‌ها را به صفحه اضافه می‌کنید. این روش مناسب است برای ساخت و مدیریت دینامیک عناصر در زمان اجرا و برنامه‌ریزی کامل‌تر صفحات وب.

مثال استفاده دینامیکی:

from htmlpy12 import HTMLpy12

# ایجاد یک نمونه از کلاس HTMLpy12
page = HTMLpy12(title="Dynamic Example")

# اضافه کردن عنصر HTML به صفحه به صورت دینامیکی
page.add_element("h1", "Welcome!", style="color: blue; text-align: center;")

# اضافه کردن استایل CSS به صفحه به صورت دینامیکی
page.add_style("body", background_color="lightgray")

# اضافه کردن اسکریپت JavaScript به صفحه به صورت دینامیکی
page.add_script('console.log("Dynamic JavaScript added!");')

# نمایش کد HTML نهایی به صورت رشته
html_content = page.generate_html()
print(html_content)

# ذخیره کردن کد HTML نهایی در یک فایل
page.save_html("dynamic_example.html")

۲. استفاده مستقیم از کدها (HTML، CSS، JS)

استفاده مستقیم از کدهای HTML، CSS و JavaScript به معنی این است که شما کدهای خود را به صورت مستقیم به صفحه اضافه می‌کنید، بدون استفاده از توابع خاصی از ماژول htmlpy12. این روش معمولاً برای اضافه کردن کدهای استاتیک و آماده به صفحه مناسب است.

مثال استفاده مستقیم:

from htmlpy12 import HTMLpy12

# ایجاد یک نمونه از کلاس HTMLpy12
page = HTMLpy12(title="Direct Example")

# اضافه کردن کد HTML به صفحه به صورت مستقیم
page.add_element("h1", "Welcome!", style="color: blue; text-align: center;")

# اضافه کردن کد CSS به صفحه به صورت مستقیم
page.add_custom_style("body { background-color: lightgray; }")

# اضافه کردن کد JavaScript به صفحه به صورت مستقیم
page.add_custom_script('console.log("Direct JavaScript added!");')

# نمایش کد HTML نهایی به صورت رشته
html_content = page.generate_html()
print(html_content)

# ذخیره کردن کد HTML نهایی در یک فایل
page.save_html("direct_example.html")

مقایسه استفاده دینامیکی و مستقیم

- استفاده دینامیکی مناسب است برای مواردی که نیاز به ایجاد و مدیریت عناصر در زمان اجرا دارید، مانند اضافه کردن عناصر به صفحه بر اساس ورودی کاربر یا داده‌های دریافتی از سرور.

- استفاده مستقیم از کدها بهتر است زمانی که شما دارای کدهای آماده (مانند یک قالب HTML، CSS یا یک فایل JavaScript) هستید و فقط می‌خواهید آن‌ها را به صفحه اضافه کنید بدون تغییر یا پردازش اضافی.

با این دو روش، می‌توانید تناسب مناسبی بین انعطاف‌پذیری و سرعت در توسعه وب داشته باشید و بهترین روش را بر اساس نیازهای خاص پروژه‌ی خود انتخاب کنید.
Python3
htmlpy12.py
ماژول htmlpy12 با دارا بودن ویژگی‌های زیر، به عنوان یک ابزار قدرتمند برای ساخت صفحات وب، می‌تواند به عنوان یکی از برترین ماژول‌های HTML در نظر گرفته شود:

1. اضافه کردن عناصر HTML به صورت دینامیکی: این ماژول امکان اضافه کردن عناصر HTML به صفحه را به صورت دینامیکی فراهم می‌کند، که این امر برای ساخت صفحات وب پویا و تعاملی بسیار مفید است.

2. مدیریت استایل‌ها و CSS: htmlpy12 به شما این امکان را می‌دهد که استایل‌ها و قوانین CSS را به صفحات خود اضافه کنید، همچنین قابلیت اعمال استایل‌های سفارشی به صورت دینامیکی نیز فراهم شده است.

3. ادغام آسان با اسکریپت‌های JavaScript: این ماژول به شما اجازه می‌دهد تا اسکریپت‌های JavaScript را به صفحات خود اضافه کنید، که این امر برای ساخت صفحات وب تعاملی و دارای امکانات پیچیده بسیار حیاتی است.

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

5. پشتیبانی از کامپوننت‌ها: این ماژول به شما این امکان را می‌دهد که کامپوننت‌های قابل استفاده مجدد تعریف کرده و در صفحات مختلف خود استفاده کنید، که این امر به سازماندهی بهتر کدها و افزایش قابلیت اطمینان وب‌سایت شما کمک می‌کند.

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

7. سادگی و استفاده آسان: htmlpy12 به گونه‌ای طراحی شده است که حتی کاربران تازه وارد به دنیای برنامه‌نویسی وب نیز بتوانند به راحتی از آن استفاده کنند، بدون نیاز به دانش عمیق برنامه‌نویسی.

با توجه به این ویژگی‌ها، htmlpy12 ابزاری مناسب برای هر کسی است که به دنبال ساخت صفحات وب زیبا، پویا و تعاملی باشد، و توانایی ارائه یک تجربه کاربری بی‌نظیر را دارد که از طریق افزودن دینامیک عناصر، استایل‌ها، اسکریپت‌ها و پشتیبانی از کامپوننت‌ها به وجود می‌آید.
Python3
htmlpy12.py
حاجی این ماژوله که ساختم خوبه آپدیت کنمش بزارم یانه
👍1
🌟 آموزش ترفند خفن با شی‌ءگرایی در پایتون! 🌟

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

1. تعریف یک کلاس با متدهای جادویی

متدهای جادویی، متدهایی هستن که با دو خط زیر و دو خط بالا محصور شدن. این متدها به پایتون اجازه میدن رفتارهای خاصی برای کلاس‌ها تعریف کنیم. توی این مثال، یه کلاس وکتور (Vector) می‌سازیم که قابلیت جمع، ضرب و محاسبه طول رو داره.

class Vector:
def __init__(self, x, y):
self.x = x
self.y = y

def __repr__(self):
return f"Vector({self.x}, {self.y})"

def __add__(self, other):
return Vector(self.x + other.x, self.y + other.y)

def __mul__(self, scalar):
return Vector(self.x * scalar, self.y * scalar)

def __len__(self):
return int((self.x**2 + self.y**2)**0.5)

# نمونه استفاده
v1 = Vector(3, 4)
v2 = Vector(2, -1)
print(v1 + v2) # Vector(5, 3)
print(v1 * 3) # Vector(9, 12)
print(len(v1)) # 5

amulمع دو وکتور، _am برای ضlen در یک عدد و ضlen در یک عدد و __len__ برای محاسبه طول وکتور تعریف شدن. با این کار، کار با وکتورها خیلی راحت‌تر میش 2. استفاده از دکوراتورها برای افزودن قابلیت‌هاها**

دکوراتورها به ما اجازه میدن که به سادگی قابلیت‌های جدید به توابع و متدها اضافه کنیم. در این مثال، یه دکوراتور به نام trace تعریف می‌کنیم که اجرای توابع رو پیگیری می‌کنه و ورودی و خروجی اون‌ها رو چاپ می‌کنه.

def trace(func):
def wrapper(*args, **kwargs):
print(f"Executing {func.__name__} with arguments {args} and {kwargs}")
result = func(*args, **kwargs)
print(f"{func.__name__} returned {result}")
return result
return wrapper

class Calculator:
@trace
def add(self, a, b):
return a + b

@trace
def multiply(self, a, b):
return a * b

# نمونه استفاده
calc = Calculator()
print(calc.add(3, 5)) # Executing add with arguments (3, 5) and {}
# add returned 8
# 8
print(calc.multiply(4, 7)) # Executing multiply with arguments (4, 7) and {}
# multiply returned 28
# 28

با استفاده از این دکوراتور، هر بار که تابع add یا multiply فراخوانی میشه، ورودی‌ها و خروجی‌های اون‌ها چاپ میشن که می‌تونه توی دیباگ کردن خیلی کمک‌کننده باش

نتیجه‌گیری

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

[بیا تو کانال من تا بیشتر یاد بگیری]

#برنامه‌نویسی #پایتون #آموزش #شیءگرایی #ترفند
👍2
🌟 آموزش یک ویژگی خیلی ناشناخته در پایتون: Slots! 🌟

سلام به همه دوستان برنامه‌نویس! امروز می‌خوام در مورد یک ویژگی کمتر شناخته‌شده و خیلی ناشناخته در پایتون صحبت کنم که کمتر کسی در موردش آموزش داده: slots. این ویژگی به شما امکان می‌ده تا حافظه مصرفی اشیاء کلاس رو بهینه کنید و دسترسی سریع‌تری به صفات داشته باشید. پس بریم سراغ آموزش!

1. آشنایی با slots

در
پایتون، هر شیء یک دیکشنری داخلی (dict) برای نگهداری صفات خودش داره. این دیکشنری باعث انعطاف‌پذیری زیادی می‌شه ولی حافظه زیادی هم مصرف می‌کنه. با استفاده از slots, می‌تونید این دیکشنری رو حذف کنید و حافظه کمتری مصرف کنید.

class MyClass:
__slots__ = ['x', 'y'] # فقط صفات x و y مجاز هستند

def __init__(self, x, y):
self.x = x
self.y = y

# نمونه استفاده
obj = MyClass(1, 2)
print(obj.x, obj.y) # 1 2

try:
obj.z = 3 # AttributeError: 'MyClass' object has no attribute 'z'
except AttributeError as e:
print(e)

2. مزایای استslots_slots__

- صرفه‌جویی درslot
s_slots__ باعث کاهش مصرف حافظه می‌شه چون دیگه نیازی به دیکشنری داخلی نیست.
- سرعت دسترسی بیشتر: دسترسی به صفات با استslots_slots__ سریع‌تره چون از ساختارهای داده بهینه‌تر استفاده می‌کنه.

3. محدوslots_slots__

- عدم انعطاف‌پذیری
: شما فقط می‌تونید صفات تعریفslots_slots__ رو به اشیاء اضافه کنید.
- ناسازگاری با برخی ویژگی‌ها: برخی ویژگی‌های پایتون مثل صفات داینامیک یا استفاده از متا کلاس‌ها مslots_slots__ سازگار نباشند.

4. مثالی عملی

بیایید یک مثال عملی‌تر ببینیم slots_slots__ می‌تونه در یک کلاس واقعی استفاده بشه.

class Person:
__slots__ = ['name', 'age']

def __init__(self, name, age):
self.name = name
self.age = age

def __repr__(self):
return f"Person(name={self.name}, age={self.age})"

# نمونه استفاده
p = Person("Alice", 30)
print(p) # Person(name=Alice, age=30)

try:
p.address = "123 Main St" # AttributeError: 'Person' object has no attribute 'address'
except AttributeError as e:
print(e)

نتیجه‌slotsاستفاده از __slots__, می‌تونید مصرف حافظه کلاس‌های پایتون رو بهینه کنید و دسترسی سریع‌تری به صفات داشته باشید. این ویژگی مخصوصاً در برنامه‌هایی که با تعداد زیادی از اشیاء سر و کار دارند، می‌تونه بسیار مفید باشه.

(بیا تو کانال من تا بیشتر یاد بگیری)

#برنامه‌نویسی #پایتون #آموزش
👍3
🔔 اخبار جدید پایتون - ۲۸ ژوئن ۲۰۲۴ 🔔

1. پایان موفقیت‌آمیز PyCon US 2024: کنفرانس سالانه PyCon US 2024 با موفقیت در پیتسبورگ برگزار شد. این رویداد بزرگ شامل سخنرانی‌ها، کارگاه‌ها و فرصت‌های شبکه‌سازی بود که جامعه پایتون را گرد هم آورد. 🏙️🎤

2. معرفی ابزار uv توسط Astral: Astral، سازنده ابزار محبوب Ruff، از uv رونمایی کرده است. uv یک ابزار مدیریت بسته‌ها و پروژه‌ها است که با Rust نوشته شده و سرعت بالایی دارد. 🚀🔧

3. انتشار نسخه جدید REPL در پایتون 3.13: نسخه جدید REPL (Read-Evaluate-Print Loop) در پایتون 3.13 با ویژگی‌هایی همچون پشتیبانی از چندین خط کد و تاریخچه ورودی‌ها معرفی شد. 🎨💻

4. معرفی سخنرانان اصلی EuroPython 2024: EuroPython 2024 در ماه جولای در پراگ برگزار خواهد شد و سخنرانان برجسته‌ای همچون Anna Přistoupilová و Armin Ronacher در این رویداد حضور خواهند داشت. 🌟🎙️

5. تاخیر در اجرای PEP 649 تا پایتون 3.14: اجرای PEP 649 که به ارزیابی تأخیری از توضیحات می‌پردازد، تا نسخه 3.14 پایتون به تأخیر افتاده است. 📜

6. رشد استفاده از پایتون در Snowflake: استفاده از پایتون در پلتفرم Snowflake رشد چشمگیری داشته است و این شرکت قصد دارد ابزارهای جدیدی برای پشتیبانی از پایتون ارائه دهد. ☁️📈

7. تغییرات در قوانین Python Software Foundation: تغییرات جدید در قوانین Python Software Foundation امکان حذف اعضای هر طبقه‌بندی را با رای‌گیری فراهم می‌کند. 🏛️🗳️

برای دریافت اطلاعات بیشتر به وب‌سایت‌های معتبر پایتون مراجعه کنید.

[خبر های بروز پایتون تو کانال ما]


#Python #PyConUS2024 #EuroPython2024 #Python3.13 #uvTool #Snowflake #PSF #PEP649
👍3
🔔 آموزش یکی از ترسناک‌ترین الگوریتم‌ها در پایتون: 🕵️‍♂️🔍

سلام دوستان! می‌خوام درباره یکی از پیچیده‌ترین و ترسناک‌ترین الگوریتم‌ها در پایتون صحبت کنم:

الگوریتم صفحه‌بندی LRU (Least Recently Used).

این الگوریتم به خصوص در مدیریت حافظه و کش‌ها کاربرد داره. ممکنه در ابتدا ترسناک به نظر برسه، اما با فهم دقیق و تمرین، می‌تونید این الگوریتم رو به راحتی پیاده‌سازی کنید. پس بریم سراغ آموزش!

1. الگوریتم LRU چیه؟

الگوریتم LRU برای مدیریت حافظه و کش‌ها استفاده می‌شه. این الگوریتم قدیمی‌ترین آیتم‌های استفاده نشده را از حافظه حذف می‌کند تا جا برای آیتم‌های جدید باز شود.

2. ساختار داده‌های مورد نیاز

برای پیاده‌سازی LRU از یک دیکشنری و یک لیست دوطرفه استفاده می‌کنیم. دیکشنری برای جستجوی سریع و لیست دوطرفه برای نگهداری ترتیب استفاده از آیتم‌ها.

3. پیاده‌سازی LRU Cache

بیایید با هم یک LRU Cache را پیاده‌سازی کنیم:

class DLinkedNode:
def __init__(self, key=0, value=0):
self.key = key
self.value = value
self.prev = None
self.next = None

class LRUCache:
def __init__(self, capacity: int):
self.cache = {}
self.capacity = capacity
self.size = 0
self.head = DLinkedNode()
self.tail = DLinkedNode()
self.head.next = self.tail
self.tail.prev = self.head

def _add_node(self, node):
node.prev = self.head
node.next = self.head.next
self.head.next.prev = node
self.head.next = node

def _remove_node(self, node):
prev = node.prev
new = node.next
prev.next = new
new.prev = prev

def _move_to_head(self, node):
self._remove_node(node)
self._add_node(node)

def _pop_tail(self):
res = self.tail.prev
self._remove_node(res)
return res

def get(self, key: int) -> int:
node = self.cache.get(key, None)
if not node:
return -1
self._move_to_head(node)
return node.value

def put(self, key: int, value: int) -> None:
node = self.cache.get(key)
if not node:
newNode = DLinkedNode(key, value)
self.cache[key] = newNode
self._add_node(newNode)
self.size += 1
if self.size > self.capacity:
tail = self._pop_tail()
del self.cache[tail.key]
self.size -= 1
else:
node.value = value
self._move_to_head(node)

4. نحوه استفاده از LRU Cache

حالا بیایید یک نمونه از استفاده از LRU Cache را ببینیم:

lru_cache = LRUCache(2)

lru_cache.put(1, 1)
lru_cache.put(2, 2)
print(lru_cache.get(1)) # 1
lru_cache.put(3, 3) # حذف کلید 2
print(lru_cache.get(2)) # -1 (کلید 2 حذف شده)
lru_cache.put(4, 4) # حذف کلید 1
print(lru_cache.get(1)) # -1 (کلید 1 حذف شده)
print(lru_cache.get(3)) # 3
print(lru_cache.get(4)) # 4

نتیجه‌گیری

الگوریتم LRU یکی از پیچیده‌ترین و کارآمدترین الگوریتم‌ها برای مدیریت حافظه و کش است. با استفاده از دیکشنری و لیست دوطرفه، می‌توانید این الگوریتم را به راحتی در پایتون پیاده‌سازی کنید.

الگوریتم های بیشتر توی کانال ما

#برنامه‌نویسی #پایتون #آموزش #الگوریتم #LRU
👍3
Forwarded from Python3
🔔 اخبار جدید پایتون - ۲۸ ژوئن ۲۰۲۴ 🔔

1. پایان موفقیت‌آمیز PyCon US 2024: کنفرانس سالانه PyCon US 2024 با موفقیت در پیتسبورگ برگزار شد. این رویداد بزرگ شامل سخنرانی‌ها، کارگاه‌ها و فرصت‌های شبکه‌سازی بود که جامعه پایتون را گرد هم آورد. 🏙️🎤

2. معرفی ابزار uv توسط Astral: Astral، سازنده ابزار محبوب Ruff، از uv رونمایی کرده است. uv یک ابزار مدیریت بسته‌ها و پروژه‌ها است که با Rust نوشته شده و سرعت بالایی دارد. 🚀🔧

3. انتشار نسخه جدید REPL در پایتون 3.13: نسخه جدید REPL (Read-Evaluate-Print Loop) در پایتون 3.13 با ویژگی‌هایی همچون پشتیبانی از چندین خط کد و تاریخچه ورودی‌ها معرفی شد. 🎨💻

4. معرفی سخنرانان اصلی EuroPython 2024: EuroPython 2024 در ماه جولای در پراگ برگزار خواهد شد و سخنرانان برجسته‌ای همچون Anna Přistoupilová و Armin Ronacher در این رویداد حضور خواهند داشت. 🌟🎙️

5. تاخیر در اجرای PEP 649 تا پایتون 3.14: اجرای PEP 649 که به ارزیابی تأخیری از توضیحات می‌پردازد، تا نسخه 3.14 پایتون به تأخیر افتاده است. 📜

6. رشد استفاده از پایتون در Snowflake: استفاده از پایتون در پلتفرم Snowflake رشد چشمگیری داشته است و این شرکت قصد دارد ابزارهای جدیدی برای پشتیبانی از پایتون ارائه دهد. ☁️📈

7. تغییرات در قوانین Python Software Foundation: تغییرات جدید در قوانین Python Software Foundation امکان حذف اعضای هر طبقه‌بندی را با رای‌گیری فراهم می‌کند. 🏛️🗳️

برای دریافت اطلاعات بیشتر به وب‌سایت‌های معتبر پایتون مراجعه کنید.

[خبر های بروز پایتون تو کانال ما]


#Python #PyConUS2024 #EuroPython2024 #Python3.13 #uvTool #Snowflake #PSF #PEP649
👍3