آموزش پایتون
88 subscribers
281 photos
21 videos
81 files
178 links
ارتباط با ما:
@learnpythonicyBot

لینک گروه چت:
https://t.me/learnpythonicychat

لینک چنل ایتا:
https://eitaa.com/learnpythonicy
Download Telegram
✔️ 5 دستور پایتون که مثل کلید میانبر عمل می‌کنند!

1️⃣ اجرای سرور تست سریع
python -m http.server 8000

📌 کاربرد: راه‌اندازی فوری یک سرور محلی برای تست فایل‌های HTML/JS

2️⃣ تبدیل لیست به رشته
words = ['Python', 'is', 'awesome']
sentence = ' '.join(words) # 'Python is awesome'

📌 کاربرد: اتصال آیتم‌های لیست با جداکننده دلخواه

3️⃣ معکوس کردن لیست/رشته
my_list = [1, 2, 3]
reversed_list = my_list[::-1] # [3, 2, 1]

📌 کاربرد: برعکس کردن هر دنباله‌ای بدون تابع

4️⃣ خواندن فایل در یک خط
content = [line.strip() for line in open('data.txt')]

📌 کاربرد: پردازش سریع خطوط فایل بدون .close() (پایتون خودش مدیریت می‌کند)

5️⃣ تعویض مقادیر متغیرها
a, b = 10, 5
a, b = b, a

📌 کاربرد: جابجایی مقادیر بدون متغیر موقت

#بدانیم | @learnpythonicy
#codeBites
👍2
⚙️ کدهای پایتون چجوری اجرا می‌شن؟ پشت‌صحنه‌ای که خیلیا نمی‌دونن!

وقتی یه فایل .py رو با Python اجرا می‌کنی، همه‌چیز به همین سادگی که فکر می‌کنی نیست. پشت‌صحنه، مراحل مختلفی طی می‌شن تا اون کد به خروجی تبدیل بشه

بیاین قدم‌به‌قدم ببینیم چه اتفاقی می‌افته:
---

🧩 مرحله اول: تجزیه ساختاری یا Parsing

اول از همه، کد بررسی می‌شه تا از نظر دستوری (Syntax) مشکلی نداشته باشه پایتون ساختار کد رو به یه چیزی به‌نام AST (درخت نحوی انتزاعی) تبدیل می‌کنه
---

🧱 مرحله دوم: ساخت بایت‌کد (Bytecode)

تو این مرحله، AST به مجموعه‌ای از دستورالعمل‌های ساده‌تر به‌نام بایت‌کد تبدیل می‌شه. این بایت‌کد معمولاً تو پوشه‌ی pycache ذخیره می‌شه تا اجراهای بعدی سریع‌تر باشه
---

⚙️ مرحله سوم: اجرای بایت‌کد توسط ماشین مجازی پایتون

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

توی این مرحله همه‌چیز اتفاق می‌افته:

اجرای توابع
اختصاص حافظه
هندل کردن ارورها
پردازش متغیرها و عملگرها
---

🧹 مرحله چهارم: مدیریت حافظه و Garbage Collection

پایتون یه سیستم مدیریت حافظه‌ی خودکار داره که یکی از کار هاش اینه که مثلا وقتی یه متغیر دیگه استفاده نشه، این سیستم میاد و اون رو از حافظه پاک می‌کنه. اینطوری حافظه هدر نمی‌ره.
---

جمع‌بندی

کدهای پایتون مستقیم اجرا نمی‌شن. پشت‌صحنه چند مرحله‌ی مهم اتفاق می‌افته:

.py → AST → Bytecode اجرای بایت‌کد → خروجی


اگه با این فرآیند آشنا باشی، بهتر می‌تونی دیباگ کنی، خطاها رو درک کنی و حتی عملکرد کدت رو بهینه کنی.

📌 نکته جالب: بعضی نسخه‌های پایتون مثل PyPy به‌جای تفسیر بایت‌کد، از JIT Compiler استفاده می‌کنن که سرعت رو چند برابر می‌کنه.

منبع | #بدانیم
👍3
The Quick Python Book, 4th Edition (Naomi Ceder).pdf
66.7 MB
📚 «The Quick Python Book»

📚 کتاب "سریع و کاربردی پایتون"

به دنبال یادگیری پایتون به‌صورت جامع و سریع هستید؟

مختصر، مفید و پروژه‌محور | پوشش مفاهیم پایه آشنا کردن شما با ویژگی‌های پیشرفته پایتون

چرا این کتاب را بخوانیم؟
یادگیری سریع بدون حاشیه‌پردازی‌های غیرضروری
تمرین‌های کاربردی برای تسلط بر مفاهیم
منبعی معتبر برای توسعه‌دهندگان پایتون

ویژگی‌های کلیدی کتاب
- آموزش پایتون ۳ از مقدماتی تا پیشرفته
- تمرکز بر کاربردهای واقعی و مثال‌های عملی
- پوشش مفاهیم کلیدی مثل شیءگرایی، مدیریت خطاها، ماژول‌ها و کتابخانه‌های استاندارد
- مناسب برای همه سطوح (از مبتدی تا حرفه‌ای)


#معرفی_کتاب | #بوک_تایم | منبع | آموزش پایتون
👍3
چخبر
🤓4
✔️ 10 Python One-Liners That Will Blow Your Mind!


1️⃣ Swap Variables
a, b = 10, 5; a, b = b, a

2️⃣ List Comprehension
squares = [x**2 for x in range(10)]

3️⃣ Lambda Function
add = lambda x, y: x + y

4️⃣ Read File
lines = [line.strip() for line in open('file.txt')]

5️⃣ Factorial
import math; fact = math.factorial(5)

6️⃣ Fibonacci Sequence
fib = lambda n: n if n <= 1 else fib(n-1) + fib(n-2)

7️⃣ Reverse String
reverse = "hello"[::-1]

8️⃣ Flatten List
flat_list = [item for sublist in [[1,2],[3,4]] for item in sublist]

9️⃣ Check Prime
is_prime = lambda n: all(n % i != 0 for i in range(2, int(n**0.5)+1))

🔟 Web Server
python -m http.server 8000

> *Warning: Don't overuse them in production code!*

#PythonTricks | #codeBites | @LearnPythonIcy

Which one is your favorite? Drop a comment! ⤵️
4
✔️ ساخت ربات اتوکلیکر هوشمند با پایتون

🔻 ویژگی‌های جذاب این ربات
- فعالیت هوشمند بر اساس رنگ پیکسل‌ها
- توقف آسان با کلید F1
- لاگ عملیات برای بررسی عملکرد
- حافظت از اجرای بی‌نظم با تایمر

🔻 کاربردهای عملی
1. بازی‌ها: اتوماسیون کلیک در بازی‌های ساده
2. تست نرم‌افزار: شبیه‌سازی کلیک کاربر
3. کارهای تکراری: اتوماسیون عملیات روزمره

🛠 ماژول‌های موردنیاز
pip install pyautogui keyboard


@LearnPythonIcy
3
فشار روانی از خود جنگ، آسیب‌زا تره!
سعی کنید حداقل یکبار هم که شده در طول روز، تخلیه روانی بشید

کافیه به جای امن توی خونه بشینید
چشم ها بسته و برید برای ۵ دقیقه تنفس

چه مدلی نفس بکشیم؟
🌱 ۴ ثانیه دم
🌱 ۷ ثانیه نفس نگه دار
🌱 ۸ ثانیه بازدم

@Green_Genius
👍3
✔️ Create a PDF file

#reportlab | @LearnPythonIcy
✔️String Methods in python

#string | @LearnPythonIcy
دوستان،
در این شرایط خاص، مراقب خودتان باشید.❤️

- اگر انرژی کم دارید، طبیعی است:)
- اگر تمرکز ندارید، تقصیر شما نیست=)
- اگر کارایی سابق را ندارید، خودتان را سرزنش نکنید;)

به یاد داشته باشید:
"این روزها هم گذراست...
و شما تنها نیستید."

#مراقب_همدیگر_باشیم
3
✔️ ساختار داده درخت به زبان ساده

درخت چیست؟
یک ساختار داده سلسله مراتبی شبیه درخت واقعی است که از:
- گره‌ها (Nodes): خانه‌های حاوی داده
- یال‌ها (Edges): خطوط اتصال بین گره‌ها

چرا درخت مهمه؟
- نمایش داده‌های سلسله مراتبی مثل:
- ساختار فایل‌ها در کامپیوتر 📂
- نمودار سازمانی شرکت 👨‍💼
- رابطه والد-فرزند در دیتابیس 🗄
- پایه‌ی الگوریتم‌های پیشرفته
- سرعت بالا در جستجو و مرتب‌سازی

انواع اصلی درخت
1️⃣ درخت دودویی (Binary Tree)
- هر گره حداکثر ۲ فرزند: چپ و راست

   class Node:
def __init__(self, data):
self.left = None
self.right = None
self.data = data


2️⃣ درخت جستجوی دودویی (BST)
- مقدار فرزند چپ < والد < فرزند راست
- جستجو مثل بازی "حدس عدد":

   def search(root, target):
if not root: return False
if root.data == target: return True
if target < root.data:
return search(root.left, target)
return search(root.right, target)


3️⃣ درخت AVL
- نسخه‌ی متعادل‌شده‌ی BST
- خودش رو با چرخش‌ها متعادل می‌کنه ⚖️

مثال کاربردی: سیستم فایل
📁 Documents/
├── 📁 Projects/
│ ├── 📄 report.pdf
│ └── 📁 Code/
├── 📁 Images/
│ └── 🖼 photo1.jpg
└── 📄 notes.txt


چه زمانی از درخت استفاده کنیم؟
- وقتی داده‌ها رابطه‌ی سلسله مراتبی دارن
- نیاز به جستجوی سریع دارید (مثل دیکشنری)
- می‌خواین داده‌ها رو به صورت مرتب‌شده نگه دارید


> "درخت‌ها پل بین ساختارهای خطی ساده و پایگاه‌داده‌های پیشرفته هستند!"

#tree | @LearnPythonIcy
👍1
✔️ نمایش سلسله مراتب داده‌ها به صورت درخت

#anytree | #tree | @LearnaPythonIcy
✔️ ماژول typer (برای ساخت CLI حرفهای)

📌 هدف ماژول typer:
- ساخت ابزارهای Command Line (CLI) به سادگی و با Type Hints.
- جایگزین مدرن و آسان برای argparse و click.
- مناسب برای اتوماسیون، اسکریپتنویسی و برنامههای کاربردی.

هدف مثال:
- نشان میدهد چطور با ۴ خط کد یک CLI تعاملی بسازید!
- آموزش استفاده از آرگومانهای اجباری/اختیاری و Type Hints.

#typer | @LearnPythonIcy
👍2
✔️ مثال کاربردی با ماژول toml

🔹 کاربرد اصلی ماژول toml
ماژول toml در پایتون برای کار با فایل‌های پیکربندی با فرمت TOML طراحی شده است.
فرمت TOML (مخفف *Tom's Obvious Minimal Language*) یک فرمت خوانا برای انسان و ماشین است که مخصوصاً برای فایل‌های تنظیمات محبوب است.

🔸 مقایسه با JSON/YAML:
- خوانایی بالاتر نسبت به JSON (مخصوصاً برای داده‌های پیچیده).
- ساده‌تر از YAML (بدان پیچیدگی‌های فاصله و تو رفتگی).
- استاندارد جدید پایتون برای تنظیمات پروژه‌ها.

🔹 چرا TOML بهتر از JSON برای تنظیمات؟
- پشتیبانی از کامنت (برخلاف JSON).
- نیاز به کوتیشن کمتر (مثلاً برای کلیدها).
- خوانایی نزدیک به زبان طبیعی.
1
✔️ ماژول functools یکی از ماژول‌های استاندارد پایتون است که ابزارهایی برای کار با توابع (functions) و callableها فراهم می‌کند. این ماژول بیشتر برای برنامه‌نویسی تابعی (functional programming) و کَش کردن، مرتب‌سازی، و ترکیب توابع استفاده می‌شود.


---

📦 کاربردهای اصلی functools

در ادامه مهم‌ترین ابزارها و دکوراتورهای این ماژول را توضیح می‌دهم:


---

1. 🔁 @lru_cache و @cache

برای کَش کردن نتایج توابع:
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) هنگام نوشتن دکوراتورهای سفارشی:
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

برای ساختن نسخه‌ای از یک تابع با برخی آرگومان‌های پیش‌فرض پرشده:
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():
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

برای کاهش لیستی از مقادیر به یک مقدار واحد (مثل جمع، ضرب، ...):
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 ولی با کش کردن نتیجه



---

مثال ترکیبی
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 نمی‌پذیرد


#functools | @LearnPythonIcy
3
✔️ طبقه‌بندي سرطان پستان با PCA و رگرسیون لجستیک

این کد در دو مرحله، طبقه‌بندی روی داده‌های سرطان پستان را انجام می‌دهد:

⤵️ مرحله اول
1. داده‌های سرطان پستان از sklearn بارگیری می‌شود.
2. داده‌ها به مجموعه‌های آموزش و آزمون تقسیم می‌شوند.
3. یک مدل رگرسیون لجستیک آموزش داده می‌شود.
4. دقت مدل روی داده‌های آموزش و آزمون محاسبه و چاپ می‌شود.

⤵️ مرحله دوم
1. همان داده‌ها با StandardScaler نرمال‌سازی می‌شوند.
2. با استفاده از PCA بعد داده‌ها به 2 مولفه اصلی کاهش می‌یابد.
3. مجدداً داده‌ها تقسیم و مدل رگرسیون لجستیک آموزش داده می‌شود.
4. دقت مدل جدید محاسبه و چاپ می‌شود.

هدف مقایسه عملکرد مدل قبل و بعد از کاهش ابعاد با PCA است. این کد معمولاً برای نمایش تأثیر پیش‌پردازش داده و کاهش ابعاد بر عملکرد مدل‌های یادگیری ماشین استفاده می‌شود.

👇کد در کامنت

#pandas | #sklearn | #load_breast_cancer | @LearnPythonIcy
نمونه پروژه‌های پایتون از مبتدی تا پیشرفته! 👇
✔️ پروژه‌های پایتون از مبتدی تا پیشرفته!

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

🔹 سطح مبتدی (آشنایی با مبانی پایتون)

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)

💡 نکته: هرچه جلوتر بروید، چالش‌ها جذاب‌تر می‌شوند!

📌 شما چه پروژه‌ای ساخته‌اید؟ زیر همین پست ایده‌های خود را با ما به اشتراک بگذارید! 👇

#یادگیری_عملی
#project_time | @Learnpythonicy
👍1
✔️ ۵ ترفند جادویی در پردازش تصویر با پایتون (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: برای نمایش گرافیکی نتایج.

#PythonMagic | #بینایی_ماشین |@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. کد را حرفه‌ای‌تر نشان می‌دهد

#PythonTricks | #بدانیم | @LearnPythonIcy