Python3
200 subscribers
100 photos
6 videos
26 files
518 links
🎓 آموزش و پروژه‌های Python
آموزش‌های کاربردی و پروژه‌های عملی Python برای همه سطوح. 🚀
Download Telegram
ادامه کد ☝️
# تعریف ذرات و نیروها
particle = Particle(0.0, 0.0, 1.0)
force = 10.0
time = 1.0

# اعمال نیرو و شبیه‌سازی حرکت ذره
for i in range(10):
particle.apply_force(force, time)
print(f"Time: {i*time}s, Position: {particle.position}, Velocity: {particle.velocity}")

استفاده از الگوریتم‌ها در هوش مصنوعی 🤖

الگوریتم‌های محاسباتی پیشرفته یکی از اجزای اصلی هوش مصنوعی هستند. به عنوان مثال، الگوریتم‌های یادگیری ماشین برای بهینه‌سازی و یادگیری از داده‌ها استفاده می‌شوند. یکی از الگوریتم‌های پایه‌ای در این زمینه، الگوریتم نزول گرادیان (Gradient Descent) است که برای به حداقل رساندن تابع هزینه در مسائل یادگیری ماشین استفاده می‌شود.

import numpy as np

def gradient_descent(X, y, learning_rate=0.01, iterations=1000):
m = len(y)
theta = np.zeros(X.shape[1])
for i in range(iterations):
gradients = (1/m) * np.dot(X.T, (np.dot(X, theta) - y))
theta -= learning_rate * gradients
return theta

# مثال با داده‌های مصنوعی
X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
y = np.array([6, 8, 9, 11])
theta = gradient_descent(X, y)

print(f"Optimized Parameters: {theta}")

بهینه‌سازی الگوریتم‌ها برای کارایی بالا 🔄

برای کاربردهای سنگین مانند شبیه‌سازی‌های پیچیده و یا الگوریتم‌های یادگیری ماشین، بهینه‌سازی کد برای کارایی بالا اهمیت زیادی دارد. از جمله روش‌های بهینه‌سازی می‌توان به استفاده از کتابخانه‌های محاسباتی بهینه مانند NumPy، اجرای موازی (parallel processing)، و بهینه‌سازی حافظه اشاره کرد.

(🚩اینجا کلیک کن تا بیشتر یاد بگیری🚩)

#Algorithms #Computational_Programming #MachineLearning #AI #Python #برنامه‌نویسی #الگوریتم #شبیه‌سازی #محاسبات_پیشرفته #هوش_مصنوعی
ارسال پارامترهای یک کلاس به کلاس دیگر در پایتون 🐍

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

مثال: ارسال پارامترهای یک کلاس به کلاس دیگر

class ClassA:
def __init__(self, param1, param2):
self.param1 = param1
self.param2 = param2

class ClassB:
def __init__(self, class_a_instance):
self.param1 = class_a_instance.param1
self.param2 = class_a_instance.param2

def display_params(self):
print(f"Param1: {self.param1}, Param2: {self.param2}")

# ایجاد یک شیء از کلاس A
a = ClassA(10, 20)

# ارسال شیء کلاس A به کلاس B
b = ClassB(a)

# نمایش مقادیر پارامترها در کلاس B
b.display_params()

توضیحات:

1. ClassA:
- این کلاس دو پارامتر param1 و param2 را دریافت کرده و آن‌ها را به عنوان ویژگی‌های (Attributes) شیء ذخیره می‌کند.

2. ClassB:
- این کلاس به عنوان ورودی یک شیء از نوع ClassA دریافت می‌کند و مقادیر param1 و param2 آن شیء را در خودش ذخیره می‌کند.
- متد display_params مقادیر این پارامترها را چاپ می‌کند.

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

خروجی:

Param1: 10, Param2: 20

به همین سادگی می‌توانید پارامترهای یک کلاس را به کلاس دیگری ارسال کرده و از آن‌ها استفاده کنید! 😎

⚠️کلیک کن تا بیشتر یاد بگیری⚠️


#Python #برنامه‌نویسی #آموزش_پایتون #کلاس_ها #OOP
1
ارسال پارامترهای یک کلاس به کلاس دیگر در پایتون 🐍

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

مثال: ارسال پارامترهای یک کلاس به کلاس دیگر

class ClassA:
def __init__(self, param1, param2):
self.param1 = param1
self.param2 = param2

class ClassB:
def __init__(self, class_a_instance):
self.param1 = class_a_instance.param1
self.param2 = class_a_instance.param2

def display_params(self):
print(f"Param1: {self.param1}, Param2: {self.param2}")

# ایجاد یک شیء از کلاس A
a = ClassA(10, 20)

# ارسال شیء کلاس A به کلاس B
b = ClassB(a)

# نمایش مقادیر پارامترها در کلاس B
b.display_params()

توضیحات:

1. ClassA:
- این کلاس دو پارامتر param1 و param2 را دریافت کرده و آن‌ها را به عنوان ویژگی‌های (Attributes) شیء ذخیره می‌کند.

2. ClassB:
- این کلاس به عنوان ورودی یک شیء از نوع ClassA دریافت می‌کند و مقادیر param1 و param2 آن شیء را در خودش ذخیره می‌کند.
- متد display_params مقادیر این پارامترها را چاپ می‌کند.

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

خروجی:

Param1: 10, Param2: 20

به همین سادگی می‌توانید پارامترهای یک کلاس را به کلاس دیگری ارسال کرده و از آن‌ها استفاده کنید! 😎

⚠️کلیک کن تا بیشتر یاد بگیری⚠️


#Python #برنامه‌نویسی #آموزش_پایتون #کلاس_ها #OOP
ارسال پارامترهای یک کلاس به چهار کلاس دیگر برای انجام معادلات مختلف 🧮

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

مثال: ارسال پارامترها به چهار کلاس مختلف

class ClassA:
def __init__(self, num1, num2, num3):
self.num1 = num1
self.num2 = num2
self.num3 = num3

class Addition:
def __init__(self, class_a_instance):
self.result = class_a_instance.num1 + class_a_instance.num2 + class_a_instance.num3

def get_result(self):
return f"جمع اعداد: {self.result}"

class Multiplication:
def __init__(self, class_a_instance):
self.result = class_a_instance.num1 * class_a_instance.num2 * class_a_instance.num3

def get_result(self):
return f"ضرب اعداد: {self.result}"

class Average:
def __init__(self, class_a_instance):
self.result = (class_a_instance.num1 + class_a_instance.num2 + class_a_instance.num3) / 3

def get_result(self):
return f"میانگین اعداد: {self.result}"

class MaxValue:
def __init__(self, class_a_instance):
self.result = max(class_a_instance.num1, class_a_instance.num2, class_a_instance.num3)

def get_result(self):
return f"بیشترین عدد: {self.result}"

# ایجاد یک شیء از کلاس A
a = ClassA(10, 20, 30)

# ارسال شیء کلاس A به کلاس‌های مختلف و انجام عملیات
addition = Addition(a)
multiplication = Multiplication(a)
average = Average(a)
max_value = MaxValue(a)

# نمایش نتایج
print(addition.get_result())
print(multiplication.get_result())
print(average.get_result())
print(max_value.get_result())

توضیحات:

1. ClassA:
- این کلاس سه عدد num1، num2 و num3 را دریافت کرده و آن‌ها را به عنوان ویژگی‌های شیء ذخیره می‌کند.

2. Addition:
- این کلاس مجموع سه عدد را محاسبه کرده و نتیجه را در ویژگی result ذخیره می‌کند.
- متد get_result نتیجه جمع را بازمی‌گرداند.

3. Multiplication:
- این کلاس ضرب سه عدد را محاسبه کرده و نتیجه را در ویژگی result ذخیره می‌کند.
- متد get_result نتیجه ضرب را بازمی‌گرداند.

4. Average:
- این کلاس میانگین سه عدد را محاسبه کرده و نتیجه را در ویژگی result ذخیره می‌کند.
- متد get_result نتیجه میانگین را بازمی‌گرداند.

5. MaxValue:
- این کلاس بیشترین عدد از بین سه عدد را محاسبه کرده و نتیجه را در ویژگی result ذخیره می‌کند.
- متد get_result بیشترین عدد را بازمی‌گرداند.

خروجی:

جمع اعداد: 60
ضرب اعداد: 6000
میانگین اعداد: 20.0
بیشترین عدد: 30

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

⚠️کلیک کن تا بیشتر یاد بگیری⚠️

#Python #برنامه‌نویسی #آموزش_پایتون #کلاس_ها #OOP #معادلات_ریاضی
ارسال خروجی کلاس‌ها به یک کلاس جدید برای انجام عملیات‌های بیشتر 🧩

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

مثال: ارسال خروجی کلاس‌ها به یک کلاس جدید

class ClassA:
def __init__(self, num1, num2, num3):
self.num1 = num1
self.num2 = num2
self.num3 = num3

class Addition:
def __init__(self, class_a_instance):
self.result = class_a_instance.num1 + class_a_instance.num2 + class_a_instance.num3

def get_result(self):
return self.result

class Multiplication:
def __init__(self, class_a_instance):
self.result = class_a_instance.num1 * class_a_instance.num2 * class_a_instance.num3

def get_result(self):
return self.result

class Average:
def __init__(self, class_a_instance):
self.result = (class_a_instance.num1 + class_a_instance.num2 + class_a_instance.num3) / 3

def get_result(self):
return self.result

class MaxValue:
def __init__(self, class_a_instance):
self.result = max(class_a_instance.num1, class_a_instance.num2, class_a_instance.num3)

def get_result(self):
return self.result

class FinalOperations:
def __init__(self, addition, multiplication, average, max_value):
self.sum_result = addition
self.mul_result = multiplication
self.avg_result = average
self.max_result = max_value

def final_sum(self):
# جمع نتایج مختلف
return f"جمع نهایی نتایج: {self.sum_result + self.mul_result + self.avg_result + self.max_result}"

def final_multiplication(self):
# ضرب نتایج مختلف
return f"ضرب نهایی نتایج: {self.sum_result * self.mul_result * self.avg_result * self.max_result}"

# ایجاد یک شیء از کلاس A
a = ClassA(10, 20, 30)

# انجام عملیات در کلاس‌های مختلف
addition = Addition(a).get_result()
multiplication = Multiplication(a).get_result()
average = Average(a).get_result()
max_value = MaxValue(a).get_result()

# ارسال نتایج به کلاس FinalOperations
final_ops = FinalOperations(addition, multiplication, average, max_value)

# نمایش نتایج نهایی
print(final_ops.final_sum())
print(final_ops.final_multiplication())

توضیحات:

1. ClassA:
- سه عدد به عنوان ورودی می‌گیرد و آن‌ها را در خود ذخیره می‌کند.

2. Addition، Multiplication، Average، MaxValue:
- این کلاس‌ها عملیات‌های مختلفی روی اعداد انجام داده و نتیجه را برمی‌گردانند.

3. FinalOperations:
- این کلاس چهار خروجی از کلاس‌های قبلی را به عنوان ورودی می‌گیرد.
- دارای متدهای final_sum و final_multiplication است که روی این نتایج عملیات‌های جدیدی انجام می‌دهد.
- final_sum تمام نتایج را با هم جمع می‌کند.
- final_multiplication تمام نتایج را در هم ضرب می‌کند.

خروجی:

جمع نهایی نتایج: 6080.0
ضرب نهایی نتایج: 10800000000.0

با این روش، می‌توانید خروجی‌های چندین کلاس را به یک کلاس جدید ارسال کنید و عملیات‌های مختلفی روی این داده‌ها انجام دهید. این روش به شما امکان می‌دهد که کدتان را مدولارتر و قابل استفاده مجدد کنید. 🚀

⚠️کلیک کن تا بیشتر یاد بگیری⚠️

#Python #برنامه‌نویسی #آموزش_پایتون #کلاس_ها #OOP #مدولاریت_کد
پارت ۱: مقدمه‌ای بر شبکه‌های عصبی کانولوشنی (CNN) 🌐🤖

در این قسمت به کاربردها، ضرورت و مزایای الگوریتم CNN می‌پردازیم.

۱. شبکه عصبی کانولوشنی چیست؟ 🤔
شبکه‌های عصبی کانولوشنی (CNN) نوعی از شبکه‌های عصبی مصنوعی هستند که برای تحلیل داده‌های پیچیده مانند تصاویر و ویدئوها طراحی شده‌اند. این شبکه‌ها با استفاده از لایه‌های مختلف کانولوشنی قادرند ویژگی‌های مهم تصاویر را شناسایی کنند. CNN ها با تقلید از نحوه پردازش اطلاعات در مغز انسان، به شناسایی الگوها و ویژگی‌های خاص تصاویر می‌پردازند.

۲. کاربردهای الگوریتم CNN 📸🧠
- تشخیص تصویر: یکی از اصلی‌ترین کاربردهای CNN، شناسایی و دسته‌بندی تصاویر است. به‌طور مثال، در تشخیص چهره‌ها در تصاویر یا شناسایی اشیاء.
- پردازش ویدئو: در تحلیل ویدئوها، CNN ها برای شناسایی حرکت، شناسایی اشیاء متحرک و تحلیل لحظه به لحظه تصاویر کاربرد دارند.
- پزشکی: در تصاویر پزشکی مانند اسکن‌های MRI، سی‌تی‌اسکن‌ها و رادیوگرافی‌ها، برای شناسایی ناهنجاری‌ها و بیماری‌ها مانند تومورها یا بیماری‌های قلبی.
- خودروهای خودران: در صنعت خودروهای خودران برای تشخیص موانع، علائم رانندگی، مسیرها و شناسایی عابران پیاده.

۳. چرا از CNN استفاده می‌کنیم؟
در مقایسه با سایر الگوریتم‌ها، CNN‌ها برای پردازش تصاویر بسیار کارآمدتر هستند زیرا خود به‌طور خودکار ویژگی‌های تصاویر را استخراج و شناسایی می‌کنند. این ویژگی به‌ویژه در پردازش داده‌های پیچیده و حجیم مانند تصاویر پزشکی یا ویدئوها مفید است. علاوه بر این، به دلیل استفاده از ساختار لایه‌ای، CNN ها قادرند اطلاعات را به‌طور دقیق و با سرعت بالا پردازش کنند.

۴. مزایای CNN 🏆
- دقت بالا: توانایی شناسایی دقیق ویژگی‌ها و الگوهای پیچیده در تصاویر.
- کاهش نیاز به پردازش دستی: برخلاف دیگر الگوریتم‌ها که نیاز به استخراج ویژگی‌های دستی دارند، CNN خود به‌طور اتوماتیک ویژگی‌ها را استخراج می‌کند.
- مقیاس‌پذیری: با افزایش حجم داده‌ها، عملکرد CNN‌ها به خوبی مقیاس‌پذیر است و می‌توانند در تحلیل داده‌های بزرگ به‌خوبی عمل کنند.
- زمان اجرا سریعتر: به‌دلیل استفاده از فیلترهای کانولوشن و تکنیک‌های مختلف مانند pooling، این شبکه‌ها قادر به پردازش سریعتر تصاویر هستند.

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



برای دریافت آموزش‌های بیشتر و پیاده‌سازی کامل CNN در پایتون، به کانال تلگرام ما بپیوندید! 💬
🔗 [لینک کانال تلگرام]

#AI #DeepLearning #CNN #Python
پارت ۳: پیاده‌سازی شبکه عصبی کانولوشنی (CNN) در پایتون با استفاده از Keras 🖥️🚀

در این قسمت، به نحوه پیاده‌سازی شبکه عصبی کانولوشنی (CNN) در پایتون با استفاده از کتابخانه Keras خواهیم پرداخت. Keras یک کتابخانه قدرتمند و کاربرپسند است که برای ساخت و آموزش مدل‌های یادگیری عمیق استفاده می‌شود.

۱. آماده‌سازی محیط کاری 🧑‍💻
قبل از شروع به کدنویسی، ابتدا باید کتابخانه‌های مورد نیاز را نصب کنیم. اگر Keras و TensorFlow را هنوز نصب نکردید، از دستورات زیر استفاده کنید:

pip install tensorflow

پس از نصب، می‌توانید از Keras برای ساخت مدل CNN استفاده کنید.

۲. ساختار مدل CNN در Keras 🔧
در اینجا ساختار یک مدل CNN ساده با استفاده از Keras را توضیح می‌دهیم:

۲.۱. وارد کردن کتابخانه‌ها
ابتدا باید کتابخانه‌های مورد نیاز را وارد کنیم:

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense

۲.۲. ساخت مدل
حالا یک مدل ساده CNN ایجاد می‌کنیم که شامل لایه‌های کانولوشن، پولوینگ و کاملاً متصل است:

# ساخت مدل Sequential
model = Sequential()

# لایه کانولوشن اول
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(64, 64, 3)))

# لایه پولوینگ اول
model.add(MaxPooling2D(pool_size=(2, 2)))

# لایه کانولوشن دوم
model.add(Conv2D(64, (3, 3), activation='relu'))

# لایه پولوینگ دوم
model.add(MaxPooling2D(pool_size=(2, 2)))

# لایه فلتن (Flatten) برای تبدیل داده‌های دوبعدی به یک‌بعدی
model.add(Flatten())

# لایه کاملاً متصل اول
model.add(Dense(128, activation='relu'))

# لایه خروجی (برای دسته‌بندی)
model.add(Dense(10, activation='softmax')) # فرض بر اینکه 10 کلاس داریم

۲.۳. کامپایل مدل
پس از ساخت مدل، باید آن را کامپایل کنیم. در این مرحله، الگوریتم بهینه‌سازی و معیار ارزیابی انتخاب می‌شود:

model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

۳. آموزش مدل CNN 📈
حالا که مدل ساخته و کامپایل شد، می‌توانیم آن را با داده‌های خود آموزش دهیم. فرض کنید که داده‌های شما در دو متغیر X_train (ویژگی‌ها) و y_train (برچسب‌ها) ذخیره شده است:

model.fit(X_train, y_train, epochs=10, batch_size=32)

این دستور مدل را برای ۱۰ دوره آموزش می‌دهد و در هر دوره، داده‌ها را به صورت بچ‌های ۳۲تایی وارد شبکه می‌کند.

۴. ارزیابی مدل 📊
پس از آموزش مدل، می‌توانیم آن را با داده‌های آزمایشی ارزیابی کنیم تا دقت مدل را بسنجیم:

test_loss, test_acc = model.evaluate(X_test, y_test)
print(f"Test Accuracy: {test_acc}")

۵. استفاده از مدل برای پیش‌بینی 🧩
در نهایت، برای پیش‌بینی یک تصویر جدید از مدل استفاده می‌کنیم:

predictions = model.predict(new_image)

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

۶. نتیجه‌گیری
در این قسمت، با پیاده‌سازی یک مدل ساده CNN در پایتون آشنا شدیم. در قسمت‌های بعدی، می‌توانید به موارد پیشرفته‌تر مانند تنظیمات بهینه‌سازی و تکنیک‌های افزایش دقت مدل بپردازید.



برای دریافت آموزش‌های بیشتر در زمینه یادگیری عمیق و پیاده‌سازی مدل‌های پیشرفته‌تر CNN، به کانال تلگرام ما بپیوندید! 💬
🔗 [لینک کانال ]

#DeepLearning #CNN #Python #Keras
1
مدیریت خودکار حافظه در پایتون 🧠💡

در پایتون، مدیریت حافظه به‌صورت خودکار انجام می‌شود. یعنی برخلاف زبان‌های سطح پایین مثل C و C++، نیازی به تخصیص یا آزادسازی دستی حافظه نیست و این کار به لطف سیستم مدیریت حافظه خودکار انجام می‌شود. این سیستم شامل شمارش ارجاعات و جمع‌آوری زباله‌ها می‌باشد. بیایید به‌صورت کامل این دو مکانیزم را بررسی کنیم:



🔹 بخش اول: شمارش ارجاعات (Reference Counting)
پایتون از شمارش ارجاعات برای مدیریت حافظه استفاده می‌کند. هر شی در پایتون دارای یک شمارشگر است که تعداد ارجاعات به آن شی را نشان می‌دهد. وقتی مقدار شمارش ارجاعات به صفر برسد، یعنی دیگر هیچ بخشی از برنامه به آن شی نیاز ندارد و پایتون می‌تواند حافظه آن را آزاد کند.

چطور شمارش ارجاعات کار می‌کند؟
- هر زمان که یک متغیر به شی‌ای اشاره می‌کند، شمارش ارجاعات آن شی افزایش می‌یابد.
- وقتی ارجاعی حذف می‌شود، شمارش ارجاعات کاهش می‌یابد.
- زمانی که شمارش به صفر برسد، پایتون حافظه را آزاد می‌کند.

مثال:
a = [1, 2, 3]
b = a # شمارش ارجاعات به شی لیست افزایش می‌یابد
del a # شمارش ارجاعات کاهش می‌یابد

مزیت‌ها:
- *سریع و کارآمد*: شمارش ارجاعات بسیار سریع است و به‌صورت همزمان با اجرای برنامه انجام می‌شود.

چالش‌ها:
- *حلقه‌های مرجع*: اگر دو یا چند شی به صورت چرخه‌ای به یکدیگر ارجاع دهند، ممکن است باعث شود که حافظه هرگز آزاد نشود؛ چون شمارش ارجاعات آن‌ها هیچ وقت به صفر نمی‌رسد.



🔹 بخش دوم: جمع‌آوری زباله‌ها (Garbage Collection)
پایتون از یک سیستم جمع‌آوری زباله‌های دورانی برای پاکسازی حافظه اشیاء بدون ارجاع استفاده می‌کند که شمارش ارجاعات به تنهایی قادر به آزادسازی آن‌ها نیست.

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

مثال: اجرای دستی جمع‌آوری زباله‌ها
import gc

gc.collect() # اجرای دستی جمع‌آوری زباله

مزیت‌ها:
- *حذف حلقه‌های مرجع*: این مکانیزم باعث می‌شود که حافظه اشیائی که در حلقه‌های مرجع هستند آزاد شود.



🔹 بهینه‌سازی حافظه: بهترین تمرین‌ها
برای بهینه‌سازی استفاده از حافظه، این نکات را در نظر بگیرید:

1. پاکسازی متغیرهای غیرضروری: متغیرهایی که دیگر نیازی به آن‌ها ندارید را با del حذف کنید تا شمارش ارجاعات کاهش یابد.
2. کپی‌های غیرضروری را حذف کنید: از کپی‌های سطحی و عمیق تنها در مواقع نیاز استفاده کنید.
3. ماژول gc: می‌توانید در برنامه‌های طولانی‌مدت و پیچیده، با gc.collect() حافظه را بهینه کنید.
4. Weak References: در مواقعی که نیازی به جلوگیری از جمع‌آوری زباله ندارید، از weak referenceها استفاده کنید.



🔹 جمع‌بندی 📜
مدیریت خودکار حافظه در پایتون به لطف شمارش ارجاعات و جمع‌آوری زباله‌ها انجام می‌شود. این سیستم به شما اجازه می‌دهد که بدون نگرانی از مدیریت دستی حافظه، برنامه‌هایی قابل اعتماد و بهینه بسازید. به کمک نکات بالا و ابزارهایی مثل gc می‌توانید مدیریت حافظه را بهتر درک کرده و از آن بهینه‌تر استفاده کنید.


برای آموزش‌های بیشتر و مباحث حرفه‌ای‌تر برنامه‌نویسی، به کانال ما بپیوندید 📢
🔗 [لینک کانال تلگرام]

#PythonMemory #MemoryManagement #GarbageCollection #Python
1
پارت 1: آموزش SQL با پایتون (پایه)

👨‍💻 SQL یا Structured Query Language زبان استانداردی برای کار با پایگاه‌های داده است که به ما اجازه می‌دهد داده‌ها را ایجاد، خواندن، بروزرسانی و حذف کنیم (CRUD operations). در این پارت، می‌خواهیم SQL را در پایتون به کمک کتابخانه sqlite3 یاد بگیریم. این کتابخانه برای کار با پایگاه داده‌های SQLite در پایتون بسیار مفید است و در اکثر سیستم‌ها به صورت پیش‌فرض نصب شده است.

1️⃣ شروع کار با sqlite3

برای شروع، باید ابتدا کتابخانه sqlite3 را وارد کنیم:

import sqlite3

بعد از وارد کردن کتابخانه، برای اتصال به یک پایگاه داده، از تابع connect() استفاده می‌کنیم:

# اتصال به پایگاه داده (اگر فایل پایگاه داده وجود نداشته باشد، ساخته می‌شود)
conn = sqlite3.connect('example.db')

# ایجاد یک cursor برای اجرای دستورات SQL
cursor = conn.cursor()

در کد بالا:
- example.db نام فایل پایگاه داده است.
- اگر فایل پایگاه داده با این نام وجود نداشته باشد، به صورت خودکار ایجاد خواهد شد.
- cursor یک شی است که می‌توان از آن برای اجرای دستورات SQL استفاده کرد.

2️⃣ ایجاد یک جدول جدید

برای ایجاد یک جدول در پایگاه داده، از دستور SQL CREATE TABLE استفاده می‌کنیم. فرض کنید می‌خواهیم یک جدول برای ذخیره اطلاعات کاربر مانند نام، سن و ایمیل ایجاد کنیم:

# ایجاد یک جدول جدید
cursor.execute('''CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
age INTEGER,
email TEXT)''')

# ذخیره تغییرات در پایگاه داده
conn.commit()

در این کد:
- IF NOT EXISTS به این معناست که اگر جدول قبلاً ایجاد شده باشد، دوباره ایجاد نمی‌شود.
- id یک ستون است که به عنوان کلید اصلی (Primary Key) برای هر رکورد استفاده می‌شود و به طور خودکار افزایش می‌یابد (AUTOINCREMENT).

3️⃣ وارد کردن داده‌ها در جدول

حالا که جدول خود را ایجاد کرده‌ایم، می‌توانیم داده‌ها را به آن وارد کنیم. از دستور SQL INSERT INTO استفاده می‌کنیم:

# وارد کردن داده‌ها در جدول
cursor.execute("INSERT INTO users (name, age, email) VALUES (?, ?, ?)", ('Ali', 25, '[email protected]'))

# ذخیره تغییرات
conn.commit()

در این کد:
- ?ها به عنوان جایگزین برای مقادیر استفاده می‌شوند و از تزریق SQL جلوگیری می‌کنند.
- مقادیر به صورت یک‌تایپ در لیست وارد می‌شوند.

4️⃣ خواندن داده‌ها از جدول

برای خواندن داده‌ها از جدول، از دستور SQL SELECT استفاده می‌کنیم:

# خواندن داده‌ها از جدول
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()

# نمایش داده‌ها
for row in rows:
print(row)

در این کد:
- SELECT * FROM users تمام داده‌های جدول users را انتخاب می‌کند.
- fetchall() تمام نتایج را به صورت یک لیست از تاپل‌ها برمی‌گرداند.

5️⃣ بستن اتصال

پس از انجام تمام عملیات، بهتر است که اتصال به پایگاه داده را ببندیم:

# بستن اتصال به پایگاه داده
conn.close()

📚 خلاصه پارت 1:
- یاد گرفتیم که چطور به پایگاه داده متصل شویم.
- نحوه ایجاد یک جدول و وارد کردن داده‌ها را بررسی کردیم.
- چطور داده‌ها را از پایگاه داده بخوانیم.
- در نهایت اتصال به پایگاه داده را بستیم.

🔜 در پارت بعدی، به بررسی دستورات پیشرفته‌تر SQL و نحوه بروزرسانی و حذف داده‌ها خواهیم پرداخت.

#SQL #Python #SQLite #Database
👍2
پارت 2: آموزش SQL با پایتون (بروزرسانی و حذف داده‌ها)

👨‍💻 در پارت اول با نحوه ایجاد جدول، وارد کردن داده‌ها و خواندن داده‌ها از پایگاه داده آشنا شدیم. حالا در این پارت به بررسی دستورات بروزرسانی و حذف داده‌ها در پایگاه داده خواهیم پرداخت.

1️⃣ بروزرسانی داده‌ها (UPDATE)

اگر بخواهیم داده‌ای را که قبلاً وارد کرده‌ایم، تغییر دهیم، از دستور **UPDATE** استفاده می‌کنیم. مثلاً فرض کنید می‌خواهیم سن کاربری که نامش "Ali" است را تغییر دهیم.

# بروزرسانی داده‌ها
cursor.execute("UPDATE users SET age = ? WHERE name = ?", (30, 'Ali'))

# ذخیره تغییرات
conn.commit()

در این کد:
- SET age = ? به این معناست که مقدار سن تغییر می‌کند.
- WHERE name = ? مشخص می‌کند که فقط رکوردهایی که نام آن‌ها "Ali" است تغییر خواهند کرد.
- مانند قبل، برای جلوگیری از تزریق SQL از ? استفاده کرده‌ایم و مقادیر را به صورت پارامتر می‌فرستیم.

2️⃣ حذف داده‌ها (DELETE)

برای حذف داده‌ها از پایگاه داده، از دستور **DELETE** استفاده می‌کنیم. فرض کنید می‌خواهیم رکورد کاربری که نامش "Ali" است را حذف کنیم.

# حذف داده‌ها
cursor.execute("DELETE FROM users WHERE name = ?", ('Ali',))

# ذخیره تغییرات
conn.commit()

در این کد:
- DELETE FROM users تمام داده‌ها را از جدول users حذف می‌کند.
- WHERE name = ? به این معناست که فقط رکوردهایی که نام آن‌ها "Ali" است حذف می‌شوند.

⚠️ توجه داشته باشید که دستور DELETE بدون استفاده از WHERE، تمام رکوردها را حذف می‌کند. پس باید حتماً دقت کنید که از WHERE به درستی استفاده کنید تا فقط رکوردهای مورد نظر حذف شوند.

3️⃣ حذف تمام داده‌ها از جدول (Truncate)

اگر بخواهیم تمام داده‌ها را از یک جدول حذف کنیم، می‌توانیم اDELETEDELETE** استفاده کنیم بدون اینکه شرطی بگذاریم یا اDROP**DROP** برای حذف جدول استفاده کنیم.

# حذف تمام داده‌ها از جدول
cursor.execute("DELETE FROM users")

# ذخیره تغییرات
conn.commit()

یا برای حذف ساختار جدول و داده‌ها:

# حذف جدول از پایگاه داده
cursor.execute("DROP TABLE IF EXISTS users")

# ذخیره تغییرات
conn.commit()

در اینجا:
- DELETE FROM users تمام داده‌ها را از جدول حذف می‌کند، اما ساختار جدول باقی می‌ماند.
- DROP TABLE IF EXISTS users جدول users را به طور کامل حذف می‌کند، حتی اگر داده‌ها داخل آن باشند.

4️⃣ جستجوی داده‌ها با شرط‌های مختلف

برای جستجوی داده‌ها به صورت خاص‌تر، می‌توانیم اSELECTSELECT** با شرط‌های مختلWHERE*WHERE**، **LIKE**، و **ORDER BY** استفاده کنیم. به عنوان مثال، فرض کنید می‌خواهیم کاربران را بر اساس سن مرتب کنیم:

# جستجو و مرتب‌سازی داده‌ها
cursor.execute("SELECT * FROM users ORDER BY age DESC")
rows = cursor.fetchall()

# نمایش داده‌ها
for row in rows:
print(row)

در این کد:
- ORDER BY age DESC داده‌ها را بر اساس سن به صورت نزولی مرتب می‌کند.
- برای مرتب‌سازی صعودی از ASC استفاده می‌شود که به طور پیش‌فرض است.

5️⃣ بستن اتصال

در نهایت، پس از انجام عملیات‌های مورد نظر، باید اتصال به پایگاه داده را ببندیم:

# بستن اتصال به پایگاه داده
conn.close()

📚 **خلاصه پارت 2**:
- در این پارت یاد گرفتیم که چگونه UPDATE با دستور **UPDATE** بروزرسانی کنیم.
- نحوه حذف DELETE با دستور **DELETE** بررسی کردیم.
- برای حذف تمام داده‌ها یا DELETEز دDROP*DELETE** و **DROP** استفاده کردیم.
- یاد گرفتیم که چگونه داده‌ها را جستجو کرده و مرتب کنیم.

🔜 در صورتی که بخواهید در مورد SQL بیشتر یاد بگیرید، می‌توانید به مستندات رسمی SQL یا آموزش‌های پیشرفته‌تر مراجعه کنید.

#SQL #Python #SQLite #Database
👍3
هشینگ یک تکنیک فوق‌العاده قدرتمند است که می‌تواند سرعت دسترسی به داده‌ها را به طور چشم‌گیری افزایش دهد. با استفاده از هش‌مپ‌ها و هشینگ، می‌توانید پایگاه داده‌های بزرگ را به‌راحتی مدیریت کنید و از جست‌وجوهای خطی و زمان‌بر جلوگیری کنید. این روش در دنیای داده‌های بزرگ و سیستم‌های پیچیده به‌طور گسترده‌ای استفاده می‌شود و می‌تواند به شما کمک کند که حتی با سیستم‌های معمولی، از سرعت بالای پردازش داده‌ها بهره‌مند شوید.



امیدوارم که این آموزش برای شما مفید بوده باشد! 🌟 اگر سوالی دارید یا نیاز به توضیحات بیشتر دارید، حتماً در کامنت‌ها مطرح کنید. 💬


🌟 برای یادگیری بیشتر و آموزش‌های جذاب‌تر به کانال ما بپیوندید!

#هشینگ #برنامه_نویسی #Python #کامپیوتر #پایگاه_داده #الگوریتم #پیشرفت #تکنولوژی
👍2
تبدیل فایل Py به EXE

بعضی اوقات لازم هست که فایل پایتونی‌مون رو تبدیل به یک فایل EXE کنیم تا راحت بتونیم اجراش کنیم. برای این کار ابزارهای زیادی هست، ولی یکی از راحت‌ترین و بی‌دردسرترین روش‌ها استفاده از cx_Freeze هست. حالا بریم ببینیم چطوری میشه ازش استفاده کرد.

خب طبیعی هست که اول باید ابزار رو نصب کنیم. توی ترمینال این دستور رو می‌زنیم:
pip install cx_Freeze
بعد از نصب، باید یه فایل بسازیم به اسم setup.py که قراره تنظیمات تبدیل پروژه رو توش بنویسیم. اگه برنامه‌مون ساده‌ست این کد کفایت می‌کنه:
from cx_Freeze import setup, Executable

setup(
    name="اسم برنامه",
    version="ورژن برنامه",
    description="یک توضیح درباره برنامه",
    executables=[Executable("main.py")]
)
ولی اگه برنامه‌مون از کتابخونه‌های گرافیکی استفاده می‌کنه، اون وقت فایل setup.py باید یک ذره فرق داشته باشه:
from cx_Freeze import setup, Executable
import sys

base = None
if sys.platform == "win32":
    base = "Win32GUI"

setup(
    name="اسم برنامه",
    version="ورژن",
    description="توضیحات",
    executables=[Executable("main.py", base=base)]
)
نکته مهم: فایلی که می‌خواهید تبدیلش کنید باید اسمش main.py باشه. البته می‌تونید اسم دیگه هم بدید، ولی اون موقع باید توی قسمت Executable اسم دقیق فایل رو بنویسید.
حالا ترمینال رو باز کنید، وارد مسیر اون فایل شید و این دستور رو بزنید:
python setup.py build
یه پوشه به اسم build ساخته می‌شه که داخل‌ش نسخه‌ی EXE برنامه‌ هست😉


یک روش ساده‌تر هم هست که دیگه نیاز به فایل setup نداره.
که دستورش این هست:
cxfreeze --script hello.py --target-dir dist
اینجوری مستقیم فایل EXE ساخته می‌شه و نیاز به فایل setup.py نیست.
البته توی صفحه رسمی‌ش سوییچ‌های دیگه هم گذاشته شده که می‌تونید ازشون استفاده کنید:
https://cx-freeze.readthedocs.io/en/stable/script.html

🔖 #Python, #پایتون

👤 @Amir_123_ka

💎 Channel:
https://t.iss.one/programming_languages390