➿ کار با فایلهای 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 باعث میشود کد شما خوانا و آسان برای استفاده باشد. 🙂↔️
#yaml | #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 باعث میشود کد شما خوانا و آسان برای استفاده باشد. 🙂↔️
#yaml | #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 یا False6️⃣ حذف فایل
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بهره ببرید #PythonMagic | #FileHandling | #pathlib | #pandas | @learnpythonic > *برای ذخیرهسازی، تحلیل داده و اتوماسیون کاربرد دارد*
✔️ کار با لیستها در پایتون با ۷ روش حرفهای!
برای مدیریت لیستها و دادههای متوالی، این تکنیکهای کاربردی را امتحان کنید:
1️⃣ ایجاد لیست
fruits = ['apple', 'banana', 'cherry']
print(fruits)
2️⃣ اضافه کردن عنصر
fruits.append('orange')
print(fruits)
3️⃣ درج عنصر در موقعیت خاص
fruits.insert(1, 'kiwi')
print(fruits)
4️⃣ حذف عنصر
fruits.remove('banana')
print(fruits)
5️⃣ دسترسی به عناصر با ایندکس
print(fruits[0]) # اولین عنصر
print(fruits[-1]) # آخرین عنصر
6️⃣ مرتبسازی لیست
numbers = [5, 2, 9, 1]
numbers.sort()
print(numbers)
7️⃣ لیستها با فهم لیست (List Comprehension)
squares = [x**2 for x in range(5)]
print(squares)
🗝 روش ویژه: تبدیل لیست به آرایه NumPy
import numpy as np
arr = np.array([1, 2, 3, 4])
print(arr * 2)
نکات طلایی
* برای اضافه و حذف عنصر از
appendو
removeاستفاده کنید * List comprehension کد شما را کوتاه و خواناتر میکند * برای محاسبات عددی بزرگ، لیستها را به
NumPy arrayتبدیل کنید #PythonMagic | #ListHandling | #NumPy | #ListComprehension | @learnpythonicy > *برای ذخیره داده، محاسبات و پردازش اطلاعات کاربرد دارد*
✔️ 10 Python Set Tricks You Should Know! 🐍✨
1️⃣ ساخت Set یکتا از لیست
unique_items = set([1, 2, 2, 3, 4])
2️⃣ افزودن آیتم
my_set.add(5)
3️⃣ حذف آیتم بدون خطا
my_set.discard(10) # Error نمیدهد
4️⃣ اجتماع دو مجموعه (Union)
result = set1 | set2
5️⃣ اشتراک دو مجموعه (Intersection)
common = set1 & set2
6️⃣ تفاضل مجموعهها (Difference)
diff = set1 - set2
7️⃣ بررسی زیرمجموعه بودن
if set1 <= set2:
print("Subset")
8️⃣ حذف آیتم تصادفی
item = my_set.pop()
9️⃣ ساخت Set Comprehension
squares = {x**2 for x in range(5)}
🔟 حذف آیتمهای تکراری از رشته
unique_chars = set("programming")
> ⚠️ ست ها(set) فوقالعاده سریع هستند (O(1) average lookup)، اما ترتیب را حفظ نمیکنند!
#Set | #PythonTricks | #DataStructures | @LearnPythonicy
👇 بیشتر از کدوم عملیات Set در پروژههات استفاده میکنی؟
✔️ 10 Python Async & Concurrency Tricks You Should Know! ⚡🐍
1️⃣ اجرای تابع async
import asyncio
async def main():
print("Hello Async")
asyncio.run(main())
2️⃣ اجرای همزمان چند Task
async def task(n):
await asyncio.sleep(1)
return n
results = await asyncio.gather(task(1), task(2))
3️⃣ ایجاد Task در پسزمینه
task = asyncio.create_task(task(3))
4️⃣ محدود کردن همزمانی با Semaphore
sem = asyncio.Semaphore(3)
async with sem:
await some_io()
5️⃣ Timeout برای جلوگیری از Hang
await asyncio.wait_for(task(1), timeout=2)
6️⃣ اجرای کد Blocking داخل Async
loop = asyncio.get_running_loop()
result = await loop.run_in_executor(None, blocking_func)
7️⃣ استفاده از ThreadPoolExecutor
from concurrent.futures import ThreadPoolExecutor
8️⃣ استفاده از ProcessPool برای CPU-Bound
from concurrent.futures import ProcessPoolExecutor
9️⃣ مدیریت Race Condition با Lock
lock = asyncio.Lock()
async with lock:
shared_resource += 1
🔟 Async HTTP Requests با aiohttp
import aiohttp
async with aiohttp.ClientSession() as session:
async with session.get("https://api.example.com") as resp:
data = await resp.json()
> ⚠️ نکته: Async برای I/O-Bound فوقالعاده است، اما برای CPU-Bound از multiprocessing استفاده کن.
#AsyncIO #Concurrency #Backend #Performance #PythonTricks
👇 تو پروژههات بیشتر با I/O-Bound سروکار داری یا CPU-Bound؟
🚀 10 کاربرد شگفتانگیز ماژول
datetimeدر پایتون که باید بدانید! 🕰️ در دنیای برنامهنویسی، کار با تاریخ و زمان یکی از رایجترین نیازهاست. ماژول
datetimeدر پایتون ابزارهای قدرتمندی برای این منظور فراهم میکند. در اینجا 10 نکته کلیدی را با هم مرور میکنیم: 1️⃣ دریافت تاریخ و زمان فعلی: python from datetime import datetime now = datetime.now() print(now) 2️⃣ ساخت تاریخ و زمان دلخواه: python from datetime import datetime dt = datetime(2024, 3, 15, 10, 30, 0) # سال، ماه، روز، ساعت، دقیقه، ثانیه print(dt) 3️⃣ استخراج اجزای تاریخ/زمان: python year = now.year month = now.month day = now.day hour = now.hour minute = now.minute second = now.second print(f"{year}-{month}-{day} {hour}:{minute}:{second}") 4️⃣ فرمتبندی تاریخ و زمان (strftime): python formatted_date = now.strftime("%Y-%m-%d %H:%M:%S") print(formatted_date) # %A: نام کامل روز هفته، %B: نام کامل ماه 5️⃣ تبدیل رشته به تاریخ و زمان (strptime): python date_string = "2023-12-25 14:00:00" dt_object = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S") print(dt_object) 6️⃣ محاسبه اختلاف زمانی (timedelta): python from datetime import timedelta one_day = timedelta(days=1) yesterday = now - one_day print(yesterday) 7️⃣ افزودن یا کم کردن بازه زمانی: python future_date = now + timedelta(weeks=2, hours=3) print(future_date) 8️⃣ دریافت روز هفته یا روز سال: python weekday = now.weekday() # دوشنبه 0 است day_of_year = now.timetuple().tm_yday print(f"Weekday (0=Mon): {weekday}, Day of year: {day_of_year}") 9️⃣ مقایسه تاریخها: python date1 = datetime(2024, 1, 1) date2 = datetime(2024, 2, 1) if date1 < date2: print("Date1 is earlier than Date2") 🔟 تبدیل منطقه زمانی (نیازمند نصب کتابخانه
pytz): python # pip install pytz # from datetime import datetime # import pytz # # utc_now = datetime.now(pytz.utc) # local_tz = pytz.timezone("Asia/Tehran") # tehran_now = utc_now.astimezone(local_tz) # print(f"Tehran time: {tehran_now}") > ⚠️ به یاد داشته باشید که کار با تاریخ و زمان ممکن است به دلیل تفاوت مناطق زمانی و قوانین وقت تابستانی (Daylight Saving Time) کمی پیچیده شود. استفاده صحیح از کتابخانههایی مانند
pytzاین مشکلات را حل میکند! #DateTime | #PythonTips | @LearnPythonicy
«آموزش پایتون »
داخل بله یه چنل زدم، محیط بهتر و پرتعامل تری میتونیم اونجا داشته باشیم. 😉
🆔 شناسه:
https://ble.ir/learnpythonicy
✔️ ۷ ترفند کاربردی برای کار با دیکشنریها در پایتون!
اگر با دادههای کلیدی–مقداری کار میکنید، این تکنیکها سرعت و کیفیت کدنویسی شما را بالا میبرند:
---
1️⃣ ایجاد دیکشنری
python
user = {'name': 'Sara', 'age': 23, 'city': 'Tehran'}
print(user)
---
2️⃣ افزودن/ویرایش مقدار
python
user['age'] = 24
user['job'] = 'Developer'
print(user)
---
3️⃣ دریافت مقدار با get (بدون خطا)
python
print(user.get('city'))
print(user.get('phone', 'Not Found'))
---
4️⃣ حذف مقدار با pop
python
user.pop('city')
print(user)
---
5️⃣ مرور کلیدها، مقادیر و جفتها
python
for key, value in user.items():
print(key, value)
---
6️⃣ ادغام دو دیکشنری
python
a = {'x': 1, 'y': 2}
b = {'y': 20, 'z': 3}
merged = a | b
print(merged)
---
7️⃣ ساخت دیکشنری با Dictionary Comprehension
python
squares = {x: x*x for x in range(5)}
print(squares)
---
🗝 ترفند ویژه: مرتبسازی دیکشنری بر اساس مقدار
python
data = {'a': 3, 'b': 1, 'c': 2}
sorted_data = dict(sorted(data.items(), key=lambda item: item[1]))
print(sorted_data)
نکات طلایی:
* برای جلوگیری از خطا، همیشه از
getدر دسترسیهای حساس استفاده کنید * از عملگر
|برای ادغام دیکشنریها بهره ببرید (پایتون 3.9+) * Dictionary comprehension بهترین روش برای تولید سریع ساختار دادههای پیچیده است #PythonTips | #Dictionary | #Python3 | @learnpythonicy