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

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

لینک چنل ایتا:
https://eitaa.com/learnpythonicy
Download Telegram
Intertools Module


3 ترفند با itertools

امروز ما به چندین عملکرد از یک ماژول نسبتا مفید نگاه خواهیم کرد که به شما امکان می دهد به طور مؤثر با اشیاء تکرار شونده کار کنید. بیایید با یک تابع بسیار ساده شروع کنیم.

تابع accumulate کمی شبیه به reduce است، اما به جای اینکه یک مقدار نهایی به شما بدهد، به طور متوالی تابع مشخص شده در آرگومان دوم (در اینجا min) را به هر عنصر بعدی اعمال می‌کند:
min(45), min(2, 53), min(2,12)
و به همین ترتیب هربار مقایسه می‌شود و مقدار min را برمی‌گرداند و با عدد بعدی مقایسه می‌کند.

برای ایجاد ترکیب‌ها از عناصر یک شئ تکرار شونده انتخاب شده، به تابع combinations نیاز خواهید داشت. آرگومان دوم می‌تواند برای مشخص کردن طول این ترکیب استفاده شود.

تابع chain به شما این امکان را می‌دهد که چندین عنصر تکرار شونده را به یکدیگر "چسبانده" و به عنوان یک دنباله واحد استفاده کنید.

#itertools | #module | learnpythonicy
میدونی PyOxidizer چیست؟
ماژول PyOxidizer ابزاری مبتنی بر Rust است که امکان ایجاد فایل‌های اجرایی تک‌فایلی برای برنامه‌های پایتون را فراهم می‌کند. این فایل‌های اجرایی مفسر پایتون، کتابخانه‌های استاندارد و منابع برنامه را در خود جای می‌دهند و اطمینان حاصل می‌کنند که برنامه در محیط‌های مختلف به طور یکسان اجرا می‌شود. این ابزار به‌ویژه برای توزیع برنامه‌های پایتون به کاربران نهایی که ممکن است پایتون را نصب نکرده یا با ابزارهای بسته‌بندی پایتون آشنا نباشند، بسیار مفید است.

ویژگی‌های کلیدی PyOxidizer
1. فایل‌های اجرایی تک‌فایل: PyOxidizer می‌تواند مفسر پایتون، وابستگی‌ها و کد برنامه را در یک فایل اجرایی واحد جمع‌آوری کند و نیاز به نصب‌های جداگانه را از بین ببرد.
2. پشتیبانی چندپلتفرمی: این ابزار از ویندوز، macOS و لینوکس پشتیبانی می‌کند و برای توزیع در چندین پلتفرم بسیار انعطاف‌پذیر است.
3. عملکرد بالا: با بارگذاری منابع به طور مستقیم از حافظه، فایل‌های اجرایی PyOxidizer سریع‌تر راه‌اندازی می‌شوند و ماژول‌ها را به طور کارآمدتری نسبت به برنامه‌های سنتی پایتون وارد می‌کنند.
4. پیکربندی قابل تنظیم: PyOxidizer از Starlark (زبان شبیه به پایتون) برای پیکربندی استفاده می‌کند و به توسعه‌دهندگان این امکان را می‌دهد که نحوه بسته‌بندی منابع و پیکربندی مفسر پایتون را تعریف کنند.
5. ادغام با Rust: ماژول PyOxidizer از Rust برای فرآیند ساخت خود استفاده می‌کند و ویژگی‌های پیشرفته‌ای مانند لینک‌سازی استاتیک و مدیریت حافظه را امکان‌پذیر می‌سازد.

نحوه استفاده از PyOxidizer
1. نصب
PyOxidizer می‌تواند از طریق pip یا به عنوان یک crate در Rust نصب شود:
pip install pyoxidizer

همچنین می‌توان آن را با استفاده از cargo در Rust نصب کرد:
cargo install pyoxidizer

2. ایجاد یک پروژه
برای ایجاد یک پروژه جدید PyOxidizer، دستور زیر را اجرا کنید:
pyoxidizer init my_project

این دستور یک فایل پیکربندی (pyoxidizer.bzl) و یک ساختار پروژه پایه ایجاد می‌کند.

3. پیکربندی پروژه
فایل pyoxidizer.bzl نحوه ساخت و بسته‌بندی برنامه را تعریف می‌کند. تنظیمات کلیدی شامل:
- توزیع پایتون: نسخه و توزیع پایتون مورد استفاده را مشخص کنید.
- بسته‌بندی منابع: نحوه جاسازی منابع (مانند ماژول‌های پایتون، فایل‌های داده) در فایل اجرایی را تعریف کنید.
- نقطه ورودی: اسکریپت یا ماژول پایتونی را که هنگام راه‌اندازی فایل اجرایی اجرا می‌شود، تعیین کنید.

مثال پیکربندی:
def make_exe():
dist = default_python_distribution()
policy = dist.make_python_packaging_policy()
python_config = dist.make_python_interpreter_config()
python_config.run_module = "my_app" # نقطه ورودی
exe = dist.to_python_executable(
name="my_app",
packaging_policy=policy,
config=python_config,
)
return exe

4. ساخت فایل اجرایی
برای ساخت فایل اجرایی، دستور زیر را اجرا کنید:
pyoxidizer build

این دستور یک فایل اجرایی مستقل در دایرکتوری build ایجاد می‌کند.

5. آزمایش فایل اجرایی
برای آزمایش برنامه خود، فایل اجرایی تولید شده را اجرا کنید:
./build/my_app

این باید برنامه پایتون شما را به طور مورد انتظار راه‌اندازی کند.

مزایای PyOxidizer
- توزیع ساده: کاربران نیازی به نصب پایتون یا مدیریت وابستگی‌ها ندارند.
- محیط یکسان: مفسر پایتون جاسازی‌شده رفتار یکسانی را در پلتفرم‌های مختلف تضمین می‌کند.
- عملکرد: زمان‌های راه‌اندازی سریع‌تر به دلیل بارگذاری منابع مبتنی بر حافظه.

محدودیت‌ها
- اندازه فایل: فایل‌های اجرایی می‌توانند به دلیل مفسر پایتون و وابستگی‌های جاسازی‌شده بزرگ باشند.
- پیچیدگی: پیکربندی PyOxidizer نیاز به آشنایی با Starlark و Rust دارد.

موارد استفاده
- برنامه‌های کاربر نهایی: توزیع برنامه‌های پایتون به کاربران غیر فنی.
- سیستم‌های جاسازی شده: اجرای برنامه‌های پایتون در محیط‌هایی که پایتون نصب نشده است.
- ابزارهای DevOps: ساده‌سازی استقرار ابزارهای مبتنی بر پایتون در خطوط CI/CD.

نتیجه‌گیری
ماژول PyOxidizer یک راه‌حل قوی برای بسته‌بندی و توزیع برنامه‌های پایتون است. با جاسازی مفسر پایتون و وابستگی‌ها در یک فایل اجرایی واحد، بسیاری از چالش‌های مرتبط با توزیع برنامه‌های پایتون را از بین می‌برد. در حالی که نیاز به تنظیمات اولیه دارد، مزایای آن از نظر عملکرد و سهولت استفاده، آن را به ابزاری ارزشمند برای توسعه‌دهندگان تبدیل می‌کند.

#pyoxidizer | #module | LearnPython
امروز قراره درباره ماژول pathlib در پایتون صحبت کنیم!

ماژول pathlib در پایتون برای کار با مسیرها و فایل‌ها استفاده می‌شود و با استفاده از آن می‌توانید عملیات مختلفی روی فایل‌ها و دایرکتوری‌ها انجام دهید. این ماژول در پایتون 3.4 معرفی شد و به دلیل رابط کاربری راحت و توانمندی‌های گسترده، بسیار محبوب است.

🔅 توضیح کوتاه درباره ماژول pathlib:
ماژول pathlib یک رابط شی‌ءگرا برای کار با سیستم فایل فراهم می‌کند. این ماژول اجازه می‌دهد تا با مسیرهای فایل به صورت اشیاء کار کنید و عملیات مختلفی مانند خواندن، نوشتن، کپی، حذف و ... را به سادگی انجام دهید.

🔅 مثال کاربردی:
در این مثال، می‌خواهیم یک فایل متنی را ایجاد کنیم، محتوایی در آن بنویسیم و سپس آن را بخوانیم.

from pathlib import Path

# تعریف مسیر فایل
file_path = Path("example.txt")

# ایجاد فایل و نوشتن محتوا در آن
file_path.write_text("Hello, this is a test file created with pathlib!")

# خواندن محتوا از فایل
content = file_path.read_text()
print("File Content:", content)

# بررسی اینکه آیا فایل وجود دارد یا نه
if file_path.exists():
print("The file exists.")
else:
print("The file does not exist.")

# حذف فایل
file_path.unlink()
print("The file has been deleted.")


🔅 توضیحات:
1. وارد کردن ماژول pathlib:

   from pathlib import Path

- ماژول pathlib را وارد می‌کنیم و از کلاس Path آن استفاده می‌کنیم.

2. تعریف مسیر فایل:

   file_path = Path("example.txt")

- یک شیء از کلاس Path ایجاد می‌کنیم که نشان‌دهنده مسیر فایل example.txt است.

3. ایجاد فایل و نوشتن محتوا در آن:

   file_path.write_text("Hello, this is a test file created with pathlib!")

- با استفاده از متد write_text، یک فایل متنی ایجاد کرده و محتوای مشخص شده را در آن می‌نویسیم.

4. خواندن محتوا از فایل:

   content = file_path.read_text()
print("File Content:", content)

- با استفاده از متد read_text، محتوای فایل را می‌خوانیم و آن را چاپ می‌کنیم.

5. بررسی وجود فایل:

   if file_path.exists():
print("The file exists.")
else:
print("The file does not exist.")

- با استفاده از متد exists، بررسی می‌کنیم که آیا فایل وجود دارد یا نه و پیامی را چاپ می‌کنیم.

6. حذف فایل:

   file_path.unlink()
print("The file has been deleted.")

- با استفاده از متد unlink، فایل را حذف می‌کنیم و پیامی را چاپ می‌کنیم.

این مثال نشان‌دهندهٔ توانمندی‌های ماژول pathlib و نحوه استفاده از آن برای انجام عملیات مختلف روی فایل‌ها و مسیرها است.


#pathlib | #module | learnpythonicy
یک اسکریپت کوتاه با استفاده از ماژول random که یک تولید کننده شعار تصادفی (Random Quote Generator) ایجاد می‌کند.

ماژول random: از تابع random.choice() برای انتخاب یک عنصر تصادفی از لیست استفاده می‌شود.
لیست quotes: می‌توانید شعارهای خود را به این لیست اضافه کنید.

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

این اسکریپت کوچک اما قدرتمند است و می‌تواند ایده‌های خلاقانه‌تری را برای شما الهام بخشد! 🚀

#random | #module | learnpythonicy
دریافت IP و Hostname سیستم با استفاده از پایتون با ماژول‌ socket

ماژول socket برای کار با شبکه و ارتباطات استفاده می‌شود. در این مثال، از آن برای دریافت اطلاعات شبکه سیستم استفاده می‌کنیم. تابع gethostname نام میزبان (Hostname) سیستم را برمی‌گرداند. تابع gethostbyname آدرس IP مربوط به یک Hostname را برمی‌گرداند. در اینجا، Hostname سیستم خود را به آن می‌دهیم تا IP سیستم را دریافت کنیم.

این مثال ساده نشان می‌دهد که چگونه می‌توانید با استفاده از پایتون، Hostname و IP سیستم خود را دریافت کنید. این اطلاعات می‌تواند برای کارهای شبکه‌ای، عیب‌یابی و مدیریت سیستم مفید باشد. 😊

#socket | #module | learnpythonicy
👍1
🔄 استفاده از namedtuple در Python 🔄

در این کد، با استفاده از ماژول collections و تابع namedtuple، یک نوع داده‌ای سفارشی برای نگهداری اطلاعات شخص ایجاد می‌کنیم. این روش اجازه می‌دهد تا به عناصر داده‌ای با استفاده از نام آنها دسترسی داشته باشیم.

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

این روش برای ذخیره و دسترسی به داده‌های شخصی بسیار کاربردی است و می‌تواند در پروژه‌های شما مفید باشد! 🌟

#collections | #namedtouple | #module | learnpythonicy
این کد پایتون زمان فعلی را در دو منطقه زمانی مختلف (تهران و نیویورک) نمایش میدهد و همچنین زمان تهران را به زمان نیویورک تبدیل میکند. در این کد از ماژول datetime برای کار با تاریخ و زمان و از ماژول zoneinfo برای مدیریت مناطق زمانی استفاده شده است.

☑️ مراحل کد به شرح زیر است:
1. مناطق زمانی تهران و نیویورک با استفاده از ZoneInfo تعریف میشوند.
2. زمان فعلی در منطقه زمانی تهران با استفاده از datetime.now() دریافت و چاپ میشود.
3. زمان فعلی در منطقه زمانی نیویورک نیز به همین ترتیب دریافت و چاپ میشود.
4. زمان تهران به زمان نیویورک با استفاده از متد astimezone() تبدیل شده و نتیجه چاپ میشود.

این کد برای نمایش تفاوت زمان بین دو منطقه زمانی و تبدیل زمان بین آنها مفید است.

#datetime | #zoneinfo | #module | learnpythonicy
👍2