eitaa logo
آموزش پایتون
63 دنبال‌کننده
244 عکس
106 ویدیو
52 فایل
ارتباط: https://eitaa.com/joinchat/956171922Cb501d5a32f لینک همین کانال: @LearnPythonIcy لینک کانال تلگرام: https://t.me/learnpythonicy
مشاهده در ایتا
دانلود
یلدا مبارک
کتابخانه‌ی textwrap یک کتابخانه‌ی استاندارد است که برای قالب‌بندی متن در مواقعی استفاده می‌شود که به چاپ زیبا و منظم نیاز داریم. این کتابخانه قابلیت‌هایی مشابه ویرایشگرهای متن و نرم‌افزارهای پردازش متن ارائه می‌دهد. مروری کوتاه بر قابلیت‌ها: textwrap.fill() — متن را دریافت کرده و یک متن قالب‌بندی‌شده برمی‌گرداند؛ خط اول تورفتگی خود را حفظ می‌کند و فاصله‌های ابتدای هر خط بعدی در قالب پاراگراف قرار داده می‌شوند. textwrap.dedent() — برای حذف تورفتگی (پیشوند فاصله‌ی مشترک) از تمام خطوط متن استفاده می‌شود. textwrap.indent() — برای افزودن یک پیشوند متنی به تمام خطوط یک پاراگراف به‌کار می‌رود.
تابع reduce در پایتون، ماژول functools دسترسی به قابلیت‌های تابعی (Functional Programming) زبان را فراهم می‌کند. یکی از توابع مهم و کاربردی این ماژول، تابع reduce است که با اعمال متوالی یک تابع مشخص روی عناصر یک مجموعه داده، آن مجموعه را به یک مقدار نهایی کاهش می‌دهد و نتایج میانی را در طول فرآیند حفظ می‌کند. به‌عنوان مثال، می‌توان عملکرد reduce را در ضرب متوالی اعداد مشاهده کرد: ابتدا عدد 1 در 2 ضرب می‌شود، سپس حاصل به‌دست‌آمده در 3 ضرب می‌گردد و این روند به همین شکل ادامه پیدا می‌کند.
✔️ حذف None و مقادیر تکراری با حفظ ترتیب در پایتون در بسیاری از سناریوهای واقعی (دیتاپروسسینگ، لاگ‌ها، ورودی کاربر)، علاوه بر حذف مقادیر تکراری و None، حفظ ترتیب عناصر هم اهمیت دارد. در این حالت استفاده از set مناسب نیست، چون ترتیب را از بین می‌برد. راه‌حل تمیز و پایتونیک، استفاده از dict.fromkeys است: data = [1, 2, None, 3, 2, None, 4, 1] clean_data = list(dict.fromkeys(x for x in data if x is not None)) print(clean_data) 📌 خروجی: [1, 2, 3, 4] 🔍 مزایا . ترتیب لیست حفظ می‌شود . بدون حلقه‌ی دستی . مناسب پیش‌پردازش دیتا ⚠️ نکته: این روش از پایتون 3.7 به بعد کاملاً قابل اعتماد است (ترتیب دیکشنری حفظ می‌شود). | | | | @LearnPythonIcy
✔️ گروه‌بندی آیتم‌ها در پایتون با defaultdict در بسیاری از سناریوهای واقعی (دیتاپروسسینگ، گزارش‌گیری، لاگ‌ها، دسته‌بندی داده‌ها)، نیاز داریم آیتم‌ها را بر اساس یک کلید مشخص گروه‌بندی کنیم. روش‌های معمول با if و in کد را شلوغ می‌کنند. راه‌حل پایتونیک و تمیز: استفاده از defaultdict.
from collections import defaultdict

data = [
    ("apple", "fruit"),
    ("carrot", "vegetable"),
    ("banana", "fruit"),
    ("spinach", "vegetable"),
]

grouped = defaultdict(list)

for item, category in data:
    grouped[category].append(item)

print(dict(grouped))
📌 خروجی: { 'fruit': ['apple', 'banana'], 'vegetable': ['carrot', 'spinach'] } 🔍 مزایا کد خوانا و کوتاه بدون نیاز به چک‌کردن وجود کلید مناسب برای دسته‌بندی دیتا و گزارش‌ها ⚠️ نکته: defaultdict مقدار پیش‌فرض می‌سازد، پس اگر نوع داده اشتباه انتخاب شود، ممکن است باگ پنهان ایجاد کند. | | | | @LearnPythonIcy
دقت در محاسبات عددی (Floating vs Decimal vs Fraction) در اغلب زبان‌های برنامه‌نویسی، اعداد اعشاری از نوع Floating-point به‌صورت دودویی در حافظه ذخیره می‌شوند. این یعنی در بسیاری از محاسبات، با مقادیر تقریبی سروکار داریم، نه عدد دقیق. برای افزایش دقت: می‌توان از Decimal استفاده کرد که خطای اعشاری را تا حد زیادی کاهش می‌دهد، اما حتی Decimal هم در برخی سناریوهای خاص کاملاً بی‌نقص نیست. 📌 وقتی دقت ۱۰۰٪ اهمیت دارد (مثل محاسبات مالی، آماری یا ریاضی دقیق)، بهترین انتخاب Fraction است. که Fraction عدد را به‌صورت کسر منطقی (صورت/مخرج) ذخیره می‌کند، نه اعشار تقریبی؛ در نتیجه محاسبات: . دقیق . قابل پیش‌بینی . بدون خطای اعشاری انجام می‌شوند. ✅ خلاصه‌ی انتخاب float → سریع ولی تقریبی Decimal → دقیق‌تر، مناسب محاسبات حساس Fraction → دقیق‌ترین گزینه برای محاسبات ایده‌آل 🧪 مثال
from decimal import Decimal
from fractions import Fraction

# float
print(0.1 + 0.2)
# خروجی: 0.30000000000000004

# Decimal
print(Decimal("0.1") + Decimal("0.2"))
# خروجی: 0.3

# Fraction
print(Fraction(1, 10) + Fraction(2, 10))
# خروجی: 3/10

📌 نکته مهم:

float
 به‌خاطر نمایش دودویی دچار خطا می‌شود. 

Decimal
 باید با رشته (string) ساخته شود. 

Fraction
 نتیجه را دقیق و بدون خطا نگه می‌دارد


 |  |  |  |  | @Learnpythonicy
کار با فایل‌های YAML در Python با کتابخانه PyYAML کتابخانه PyYAML امکان کار آسان و مؤثر با فایل‌های YAML (YAML Ain’t Markup Language) را فراهم می‌کند. این فرمت معمولاً برای پیکربندی‌ها، تنظیمات و تبادل داده‌های ساختاریافته استفاده می‌شود.
import yaml

# داده‌ای که می‌خواهیم در فایل ذخیره کنیم
data_to_write = {'name': 'علی', 'age': 25, 'city': 'تهران'}

# نوشتن داده در فایل YAML
with open('example.yaml', 'w') as file:
    yaml.dump(data_to_write, file, default_flow_style=False)

# خواندن داده از فایل YAML
with open('example.yaml', 'r') as file:
    loaded_data = yaml.safe_load(file)
    print(f"داده‌های بارگذاری شده: {loaded_data}")
خروجی فایل example.yaml: age: 25 city: تهران name: علی در این مثال، ما دیکشنری data_to_write را در فایل example.yaml ذخیره کرده و سپس داده‌ها را دوباره در متغیر loaded_data بارگذاری می‌کنیم. کتابخانه PyYAML ابزار ساده و خوانایی برای کار با داده‌های YAML در Python فراهم می‌کند. چه برای ذخیره پیکربندی‌ها، چه تبادل داده‌های ساختاریافته، PyYAML باعث می‌شود کد شما خوانا و آسان برای استفاده باشد. 🙂‍↔️ | | @learnpythonicy
این تست واقعاً ذهن آدمو درگیر می‌کنه 😈 اول فکر کن خروجی این کد چیه؟ 🤯 و بعد توضیحات و بخون! ❓چرا - خط ۲: append روی لیست مشترک، همه رو [1] می‌کنه - خط ۳: x[1] + [2] یه لیست جدیــد می‌سازه و به x[1] نسبت داده می‌شه ← دیگه با بقیه مشترک نیست، میشه [2] - خط ۴: extend روی لیست مشترک (که هنوز x[0] و x[2] بهش وصله) عدد ۳ رو اضافه می‌کنه ← هر دو می‌شن [1, 3] 🔥نکته تستیِ پست عملگر + همیشه یه لیست جدید می‌سازه، در حالی که append و extend روی لیست موجود تغییر اعمال می‌کنند! Output: [[1, 3], [2], [1, 3]] 🎯 سوال اگه به جای x[1] = x[1] + [2] می‌نوشتیم x[1].append(2) چی میشد؟ 🤔👇 | @learnpythonicy
کار با فایل‌های YAML در Python با کتابخانه PyYAML کتابخانه PyYAML امکان کار آسان و مؤثر با فایل‌های YAML (YAML Ain’t Markup Language) را فراهم می‌کند. این فرمت معمولاً برای پیکربندی‌ها، تنظیمات و تبادل داده‌های ساختاریافته استفاده می‌شود. import yaml # داده‌ای که می‌خواهیم در فایل ذخیره کنیم data_to_write = {'name': 'علی', 'age': 25, 'city': 'تهران'} # نوشتن داده در فایل YAML with open('example.yaml', 'w') as file: yaml.dump(data_to_write, file, default_flow_style=False) # خواندن داده از فایل YAML with open('example.yaml', 'r') as file: loaded_data = yaml.safe_load(file) print(f"داده‌های بارگذاری شده: {loaded_data}") خروجی فایل example.yaml: age: 25 city: تهران name: علی در این مثال، ما دیکشنری data_to_write را در فایل example.yaml ذخیره کرده و سپس داده‌ها را دوباره در متغیر loaded_data بارگذاری می‌کنیم. کتابخانه PyYAML ابزار ساده و خوانایی برای کار با داده‌های YAML در Python فراهم می‌کند. چه برای ذخیره پیکربندی‌ها، چه تبادل داده‌های ساختاریافته، PyYAML باعث می‌شود کد شما خوانا و آسان برای استفاده باشد. 🙂‍↔️ | | @learnpythonicy
✔️ مدیریت فایل‌ها در پایتون با ۷ روش حرفه‌ای! برای کار با فایل‌ها در پایتون، این تکنیک‌های کاربردی را امتحان کنید: 1️⃣ باز کردن و خواندن فایل
with open('file.txt', 'r') as f:
    content = f.read()
print(content)
2️⃣ نوشتن در فایل
with open('file.txt', 'w') as f:
    f.write("سلام دنیا!")
3️⃣ افزودن به فایل
with open('file.txt', 'a') as f:
    f.write("\nخط جدید")
4️⃣ خواندن خط به خط
with open('file.txt', 'r') as f:
    for line in f:
        print(line.strip())
5️⃣ بررسی وجود فایل
import os
print(os.path.exists('file.txt'))  # True یا False
6️⃣ حذف فایل
import os
os.remove('file.txt')
7️⃣ مدیریت مسیرها با pathlib
from pathlib import Path
path = Path('file.txt')
print(path.exists())
print(path.read_text())
🗝 روش ویژه: خواندن و نوشتن فایل‌های CSV با pandas
import pandas as pd
df = pd.read_csv('data.csv')
print(df.head())
df.to_csv('output.csv', index=False)
نکات طلایی * همیشه از
with
برای مدیریت فایل استفاده کنید * برای مسیرهای پیچیده از
pathlib
کمک بگیرید * برای داده‌های جدولی از
pandas
بهره ببرید | | | | @learnpythonic > *برای ذخیره‌سازی، تحلیل داده و اتوماسیون کاربرد دارد*