eitaa logo
آموزش پایتون
63 دنبال‌کننده
244 عکس
106 ویدیو
52 فایل
ارتباط: https://eitaa.com/joinchat/956171922Cb501d5a32f لینک همین کانال: @LearnPythonIcy لینک کانال تلگرام: https://t.me/learnpythonicy
مشاهده در ایتا
دانلود
✔️ نمایش سلسله مراتب داده‌ها به صورت درخت | | @LearnaPythonIcy
✔️ ماژول typer (برای ساخت CLI حرفهای) 📌 هدف ماژول typer: - ساخت ابزارهای Command Line (CLI) به سادگی و با Type Hints. - جایگزین مدرن و آسان برای argparse و click. - مناسب برای اتوماسیون، اسکریپتنویسی و برنامههای کاربردی. هدف مثال: - نشان میدهد چطور با ۴ خط کد یک CLI تعاملی بسازید! - آموزش استفاده از آرگومانهای اجباری/اختیاری و Type Hints. | @LearnPythonIcy
✔️ مثال کاربردی با ماژول
toml
🔹 کاربرد اصلی ماژول
toml
ماژول
toml
در پایتون برای کار با فایل‌های پیکربندی با فرمت TOML طراحی شده است. فرمت TOML (مخفف *Tom's Obvious Minimal Language*) یک فرمت خوانا برای انسان و ماشین است که مخصوصاً برای فایل‌های تنظیمات محبوب است. 🔸 مقایسه با JSON/YAML: - خوانایی بالاتر نسبت به JSON (مخصوصاً برای داده‌های پیچیده). - ساده‌تر از YAML (بدان پیچیدگی‌های فاصله و تو رفتگی). - استاندارد جدید پایتون برای تنظیمات پروژه‌ها. 🔹 چرا TOML بهتر از JSON برای تنظیمات؟ - پشتیبانی از کامنت (برخلاف JSON). - نیاز به کوتیشن کمتر (مثلاً برای کلیدها). - خوانایی نزدیک به زبان طبیعی.
آموزش پایتون
✔️ مثال کاربردی با ماژول toml 🔹 کاربرد اصلی ماژول toml ماژول toml در پایتون برای کار با فایل‌های
import toml # pip install toml # ایجاد یک دیکشنری و ذخیره آن به فرمت TOML config = { "database": { "host": "localhost", "port": 5432, "username": "admin", "active": True }, "settings": { "debug_mode": False, "max_connections": 100 } } # تبدیل دیکشنری به رشته TOML toml_str = toml.dumps(config) print("TOML String:\n", toml_str) # نوشتن در فایل with open("config.toml", "w") as f: toml.dump(config, f) # خواندن از فایل with open("config.toml", "r") as f: loaded_config = toml.load(f) print("\nLoaded Config:", loaded_config)
✔️ ماژول functools یکی از ماژول‌های استاندارد پایتون است که ابزارهایی برای کار با توابع (functions) و callableها فراهم می‌کند. این ماژول بیشتر برای برنامه‌نویسی تابعی (functional programming) و کَش کردن، مرتب‌سازی، و ترکیب توابع استفاده می‌شود. --- 📦 کاربردهای اصلی functools در ادامه مهم‌ترین ابزارها و دکوراتورهای این ماژول را توضیح می‌دهم: --- 1. 🔁 @lru_cache و @cache برای کَش کردن نتایج توابع: python from functools import lru_cache @lru_cache(maxsize=128) def slow_function(x): print("Running...") return x * 2 @lru_cache(maxsize=None) = بدون محدودیت → مشابه @cache (در پایتون 3.9+) مناسب برای توابعی با محاسبه‌ی سنگین که بارها با ورودی‌های تکراری فراخوانی می‌شوند. --- 2. 🪝 @wraps برای حفظ متادیتا (مثل name, doc) هنگام نوشتن دکوراتورهای سفارشی: python from functools import wraps def my_decorator(func): @wraps(func) def wrapper(*args, **kwargs): print("Before call") return func(*args, **kwargs) return wrapper --- 3. 🧩 partial برای ساختن نسخه‌ای از یک تابع با برخی آرگومان‌های پیش‌فرض پرشده: python from functools import partial def power(base, exponent): return base ** exponent square = partial(power, exponent=2) print(square(4)) # 16 --- 4. 🧮 cmp_to_key برای تبدیل توابع مقایسه‌ای (قدیمی) به کلید قابل استفاده در sorted(): python from functools import cmp_to_key def compare(a, b): return a - b sorted_list = sorted([5, 2, 9], key=cmp_to_key(compare)) --- 5. 🧠 reduce برای کاهش لیستی از مقادیر به یک مقدار واحد (مثل جمع، ضرب، ...): python from functools import reduce result = reduce(lambda x, y: x + y, [1, 2, 3, 4]) print(result) # 10 > 🔸 در پایتون 3، reduce از ماژول functools آورده می‌شود (در پایتون 2 در builtin بود). --- 📌 لیست دیگر توابع مفید در functools تابع یا کلاس توضیح total_ordering ساخت مقایسه کامل از فقط چند متد singledispatch تعریف تابعی که بر اساس نوع آرگومان رفتار متفاوت دارد update_wrapper مثل @wraps برای انتقال متادیتا cached_property مثل property ولی با کش کردن نتیجه --- ✅ مثال ترکیبی python from functools import lru_cache, partial @lru_cache(maxsize=None) def factorial(n): return 1 if n == 0 else n * factorial(n - 1) triple = partial(pow, exponent=3) # خطا! چون pow آرگومان keyword نمی‌پذیرد | @LearnPythonIcy
✔️ طبقه‌بندی سرطان پستان با PCA و رگرسیون لجستیک این کد در دو مرحله، طبقه‌بندی روی داده‌های سرطان پستان انجام می‌دهد: ⤵️ مرحله اول 1. داده‌های سرطان پستان از sklearn بارگیری می‌شود. 2. داده‌ها به مجموعه‌های آموزش و آزمون تقسیم می‌شوند. 3. یک مدل رگرسیون لجستیک آموزش داده می‌شود. 4. دقت مدل روی داده‌های آموزش و آزمون محاسبه و چاپ می‌شود. ⤵️ مرحله دوم 1. همان داده‌ها با StandardScaler نرمال‌سازی می‌شوند. 2. با استفاده از PCA بعد داده‌ها به 2 مولفه اصلی کاهش می‌یابد. 3. مجدداً داده‌ها تقسیم و مدل رگرسیون لجستیک آموزش داده می‌شود. 4. دقت مدل جدید محاسبه و چاپ می‌شود. هدف مقایسه عملکرد مدل قبل و بعد از کاهش ابعاد با PCA است. این کد معمولاً برای نمایش تأثیر پیش‌پردازش داده و کاهش ابعاد بر عملکرد مدل‌های یادگیری ماشین استفاده می‌شود. 👇کد پست بعدی | | | @LearnPythonIcy
import pandas as pd from sklearn.datasets import load_breast_cancer (x, y) = load_breast_cancer(return_X_y= True) from sklearn.model_selection import train_test_split x_train, x_test, y_train, y_test= train_test_split(x, y,random_state=0) from sklearn.linear_model import LogisticRegression model = LogisticRegression(random_state=0) model.fit(x_train, y_train) from sklearn.metrics import accuracy_score print("Train Accuracy", accuracy_score(y_train, model.predict(x_train))) print("Test Accuracy", accuracy_score(y_test, model.predict(x_test))) import pandas as pd from sklearn.datasets import load_breast_cancer (x, y) = load_breast_cancer(return_X_y= True) from sklearn.preprocessing import StandardScaler x = StandardScaler().fit(x).transform(x) from sklearn.decomposition import PCA pca= PCA(n_components=2).fit(x) x = pca.transform(x) from sklearn.model_selection import train_test_split x_train, x_test, y_train, y_test= train_test_split(x, y,random_state=0) from sklearn.linear_model import LogisticRegression model = LogisticRegression(random_state=0) model.fit(x_train, y_train) from sklearn.metrics import accuracy_score print("Train Accuracy", accuracy_score(y_train, model.predict(x_train))) print("Test Accuracy", accuracy_score(y_test, model.predict(x_test)))
🍃 نمونه پروژه‌های پایتون از مبتدی تا پیشرفته! 👇
✔️ پروژه‌های پایتون از مبتدی تا پیشرفته! اگر می‌خواهید پایتون را به صورت عملی یاد بگیرید، بهترین راه ساختن پروژه‌های واقعی است! در این پست ایده‌هایی از ساده تا حرفه‌ای برای شما آماده کرده‌ام: 🔹 سطح مبتدی (آشنایی با مبانی پایتون) 1️⃣ ماشین حساب ساده - عملیات پایه ریاضی 2️⃣ تبدیل واحد (دما، وزن، طول) - مثل سانتی‌گراد به فارنهایت 3️⃣ بازی حدس عدد - کامپیوتر یک عدد تصادفی انتخاب می‌کند و کاربر باید حدس بزند 4️⃣ لیست کارها (To-Do List) - افزودن، حذف و نمایش تسک‌ها 🔸 سطح متوسط (کار با فایل‌ها، کتابخانه‌ها و داده‌ها) 5️⃣ مدیریت مخاطبان (دفترچه تلفن) - ذخیره و بازیابی اطلاعات از فایل 6️⃣ وب‌اسکرپر ساده - استخراج داده از یک صفحه وب با
requests
و
BeautifulSoup
7️⃣ پیش‌بینی آب و هوا - استفاده از APIهای رایگان مثل OpenWeatherMap 8️⃣ ربات تلگرام ساده - پاسخگویی خودکار با کتابخانه
python-telegram-bot
🔺 سطح پیشرفته (پروژه‌های واقعی و پیچیده) 9️⃣ سیستم رزرو بلیط سینما - با پایگاه داده و رابط کاربری (Tkinter یا Django) 🔟 پلتفرم وب بلاگ - با جنگو یا Flask (احراز کاربر، نظرات، پست‌ها) 1️⃣1️⃣ تشخیص چهره یا اشیا - با OpenCV و یادگیری ماشین 2️⃣1️⃣ تریدر خودکار ارز دیجیتال - تحلیل داده و APIنویسی (مثل Binance API) 💡 نکته: هرچه جلوتر بروید، چالش‌ها جذاب‌تر می‌شوند! 📌 شما چه پروژه‌ای ساخته‌اید؟ | | | @Learnpythonicy
✔️ ۵ ترفند جادویی در پردازش تصویر با پایتون (OpenCV + PIL) پردازش تصویر یکی از جذاب‌ترین بخش‌های برنامه‌نویسی است. در اینجا تکنیک‌های کاربردی را با کتابخانه‌های محبوب پایتون بررسی می‌کنیم: 1️⃣چرخش تصویر با حاشیه‌های هوشمند import cv2 import numpy as np img = cv2.imread('image.jpg') assert img is not None, "تصویر یافت نشد!" # بررسی وجود فایل rows, cols = img.shape[:2] M = cv2.getRotationMatrix2D((cols/2, rows/2), 45, 1) rotated = cv2.warpAffine(img, M, (cols, rows), borderMode=cv2.BORDER_REFLECT) cv2.imwrite('rotated.jpg', rotated) بهینه‌سازی: - اضافه کردن
assert
برای بررسی وجود فایل. - ذخیره خودکار خروجی با
imwrite
. 2️⃣ فیلتر ترکیبی (Edge Detection + Blur) from PIL import Image, ImageFilter image = Image.open('image.jpg') edges = image.filter(ImageFilter.FIND_EDGES()) # تابع باید با حروف کوچک باشد: FIND_EDGES → FIND_EDGES blurred_edges = edges.filter(ImageFilter.GaussianBlur(radius=2)) blurred_edges.save('edges_blurred.jpg') 3️⃣ تغییر رنگ‌های خاص با HSV hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) lower_red = np.array([0, 100, 100]) upper_red = np.array([10, 255, 255]) mask = cv2.inRange(hsv, lower_red, upper_red) img[mask > 0] = [0, 255, 0] # تغییر رنگ قرمز به سبز cv2.imwrite('color_changed.jpg', img) نکته: - برای تشخیص بهتر قرمز، محدوده
[170, 100, 100]
تا
[180, 255, 255]
را نیز اضافه کنید. 4️⃣ تصحیح خودکار نور gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) equalized = cv2.equalizeHist(gray) cv2.imwrite('equalized_gray.jpg', equalized) # نسخه رنگی: yuv = cv2.cvtColor(img, cv2.COLOR_BGR2YUV) yuv[:,:,0] = cv2.equalizeHist(yuv[:,:,0]) equalized_color = cv2.cvtColor(yuv, cv2.COLOR_YUV2BGR) cv2.imwrite('equalized_color.jpg', equalized_color) 5️⃣ تشخیص چهره + تار کردن پس‌زمینه face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray, 1.3, 5) mask = np.zeros_like(img) for (x,y,w,h) in faces: mask[y:y+h, x:x+w] = img[y:y+h, x:x+w] # حفظ چهره blurred_bg = cv2.GaussianBlur(img, (25,25), 0) result = np.where(mask==0, blurred_bg, mask) # ترکیب با ماسک cv2.imwrite('blurred_bg.jpg', result) 📚 کتابخانه‌های پیشنهادی - OpenCV: برای پردازش حرفه‌ای تصویر. - Pillow: برای عملیات ساده‌تر. - scikit-image: برای الگوریتم‌های پیشرفته (مثل exposure.equalize_adapthist). - matplotlib: برای نمایش گرافیکی نتایج. | |@LearnPythonicy
✔️ پیدا کردن حروف منحصر به فرد در یک رشته برای پیدا کردن حروف منحصر به فرد (حذف کاراکترهای تکراری از متن) در یک رشته، معمولاً از حلقه‌ها و ساختارهای شرطی استفاده می‌کنیم: unique_chars = [] for char in my_string: if char not in unique_chars: unique_chars.append(char) اما پایتون یک روش حرفه‌ای و بهینه‌تر ارائه می‌دهد: unique_chars = list(set(my_string)) 👀 چرا این روش کار می‌کند؟ - تابع set() به طور خودکار تمام عناصر تکراری را حذف می‌کند. - با تبدیل نتیجه به لیست، خروجی مورد نظر ما را می‌دهد. نکته: اگر ترتیب حروف مهم است، می‌توانید از dict استفاده کنید: unique_ordered = list(dict.fromkeys(my_string)) این روش: 1. سریع‌تر و خوانا تر است 2. برای رشته‌های طولانی کارایی بهتری دارد 3. کد را حرفه‌ای‌تر نشان می‌دهد | | @LearnPythonIcy