کد تصویر بالا👆
import cv2 import numpy as np import matplotlib.pyplot as plt def process_and_show_images(image_path): # خواندن تصویر image = cv2.imread(image_path) # بررسی اینکه آیا تصویر به درستی خوانده شده است یا نه if image is None: print(f"Error: Could not read the image from path: {image_path}") return # تبدیل تصویر به RGB برای نمایش با Matplotlib image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) # تبدیل تصویر به خاکستری gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # اعمال فیلتر بلور blurred_image = cv2.GaussianBlur(image_rgb, (15, 15), 0) # استخراج لبهها با استفاده از فیلتر کنی edges = cv2.Canny(gray_image, 100, 200) # تنظیمات نمایش تصاویر fig, axs = plt.subplots(2, 2, figsize=(10, 8)) axs[0, 0].imshow(image_rgb) axs[0, 0].set_title("Original Image") axs[0, 0].axis('off') axs[0, 1].imshow(gray_image, cmap='gray') axs[0, 1].set_title("Gray Image") axs[0, 1].axis('off') axs[1, 0].imshow(blurred_image) axs[1, 0].set_title("Blurred Image") axs[1, 0].axis('off') axs[1, 1].imshow(edges, cmap='gray') axs[1, 1].set_title("Edges") axs[1, 1].axis('off') plt.show() # مسیر کامل تصویر ورودی image_path = 'path_to_your_image.jpg' process_and_show_images(image_path)🔘توجه شود که در قسمت image_path، باید آدرس عکس مورد نظر را قرار دهید.
📝 ثبت پیامهای برنامه با استفاده از ماژول logging در پایتون
این کد از ماژول logging برای ثبت پیامهای اطلاعاتی (INFO)، هشدار (WARNING) و خطا (ERROR) استفاده میکند. با تنظیم سطح لاگ (level=logging.INFO)، فقط پیامهای با اهمیت بالا ثبت میشوند. این روش برای نظارت بر اجرای برنامه، اشکالزدایی و بهبود پایداری بسیار مفید است. 🚀
#logging | LearnPython | #بدانیم
کد فوق دو روش برای شمارش تکرار هر حرف در جمله text را ارائه میدهد.
1. استفاده از دیکشنری: در این روش، با یک حلقه برای هر کاراکتر در متن، تعداد تکرارها در یک دیکشنری بهروز میشود.
2. استفاده از ماژول Counter: این روش به طور مستقیم از ماژول collections استفاده میکند و شمارش تکرار هر کاراکتر را به صورت ساده و کارآمد انجام میدهد.
این دو روش به شما این امکان را میدهند که به راحتی تعداد تکرار هر کاراکتر را در متن خود محاسبه کنید.
#counter | #collections | #بدانیم | LearnPython
بنظرتون کد بالا به چه دردی میخوره اصلا؟ 🧐
کد فوق برای شمارش تعداد تکرار هر کاراکتر در یک رشته مناسب است. این کار میتواند در برنامهنویسی و تحلیل دادههای متنی به چند دلیل مفید باشد:
1. تحلیل دادههای متنی: به کاربر اجازه میدهد تا الگوها و فراوانی کاراکترها را در متون مختلف مشاهده کند.
2. فهم بهتر بازخوردهای کاربر: میتوان از این تکنیک برای تحلیل بازخوردهای متنی و نظرات کاربران استفاده کرد و بفهمید چه کاراکترها یا کلمات بیشتری مورد استفاده قرار گرفتهاند.
3. دستکاری متن: در پردازش دادهها، شمارش کاراکترها به درک بهتری از ساختار و جزئیات متن کمک میکند و میتواند در دستکاریهای متنی نیز موثر باشد.
#counter | #collections | #بدانیم
راههای مختلف برای ساخت دیکشنری با استفاده از لیست
میتوان گفت که دیکشنریها یکی از مهمترین ساختارهای دادهای در پایتون هستند که به ذخیرهسازی و دسترسی سریع به اطلاعات کمک میکنند.
#dict | #list | #بدانیم | LearnPython
Hacking Secret Ciphers with Python.pdf
حجم:
7.3M
📚«Hacking Secret Ciphers with Python»
📚کتاب "رمزنگاری سیفرهای مخفی با پایتون"
✅آیا به دنبال ورود به دنیای رمزنگاری و کدگذاری هستید؟
✅این کتاب یک راهنمای اختصاصی برای یادگیری تکنیکهای رمزنگاری با بهرهگیری از زبان برنامهنویسی پایتون است. با رویکردی عملی، خوانندگان با روشهای نوشتن و شکستن سیفرهای عرفی آشنا میشوند و مهارتهای خود را در این حوزه تقویت میکنند.
✅خلاصهای از کتاب
کتاب با تمرکز بر پروژهها و تمرینات جذاب، به شما کمک میکند تا به صورت گام به گام با مفاهیم رمزنگاری آشنا شوید و بتوانید کدهای مخفی خود را ایجاد و رمزگشایی کنید.
#معرفی_کتاب | #بوک_تایم | آموزش پایتون
این کد نحوه کار با ارجاعات ضعیف در پایتون را نشان میدهد. با استفاده از weakref، از حافظه به طور مؤثری استفاده کنید و از نشت حافظه جلوگیری نمایید. این رویکرد به مدیریت بهتر منابع در کدهای بزرگ و پیچیده کمک میکند.
#weakref | LearnPython
🔆 ماژول weakref در پایتون برای ایجاد ارجاعهای ضعیف (weak references) به اشیا استفاده میشود. ارجاعهای ضعیف به اشیا اجازه میدهند تا توسط garbage collector جمعآوری شوند، حتی اگر هنوز ارجاعهای ضعیفی به آنها وجود داشته باشد. این ماژول در مواقعی مفید است که میخواهید به یک شی اشاره کنید، اما نمیخواهید مانع از جمعآوری آن توسط garbage collector شوید.
در زیر یک مثال کاربردی از استفاده از ماژول weakref آورده شده است:
import weakref
class MyClass:
def init(self, name):
self.name = name
def del(self):
print(f'{self.name} is being deleted')
# ایجاد یک نمونه از کلاس
obj = MyClass('MyObject')
# ایجاد یک ارجاع ضعیف به شی
weak_ref = weakref.ref(obj)
# دسترسی به شی از طریق ارجاع ضعیف
print(f'Object name: {weak_ref().name}')
# حذف ارجاع قوی به شی
del obj
# تلاش برای دسترسی به شی از طریق ارجاع ضعیف بعد از حذف
if weak_ref() is None:
print('The object has been deleted')
else:
print(f'Object name: {weak_ref().name}')
🔅 توضیحات:
1. تعریف کلاس MyClass: این کلاس یک متغیر name در خود دارد و در زمان حذف شی، یک پیام را چاپ میکند.
2.ساخت یک نمونه از کلاس: شی obj از کلاس MyClass با نام 'MyObject' ساخته میشود.
3.ایجاد ارجاع ضعیف: با استفاده از weakref.ref(obj), یک ارجاع ضعیف به شی obj (که به طور مستقیم به آن دسترسی ندارد) ایجاد میشود.
4.دسترسی به شی از طریق ارجاع ضعیف: با استفاده از weak_ref(), نام شی از طریق ارجاع ضعیف چاپ میشود.
5.حذف ارجاع قوی: با استفاده از del obj, حذف ارجاع قوی به شی انجام شده و منجر به آمادهسازی آن برای حذف از حافظه میشود.
6.تلاش برای دسترسی پس از حذف: در نهایت، با بررسی اینکه آیا weak_ref() مقدار None را برمیگرداند یا خیر، مشخص میشود که آیا شی حذف شده است یا خیر. اگر ارجاع ضعیف متوجه شود که شی حذف شده است، پیام مربوط به آن چاپ میشود.
🔅 خروجی برنامه:
Object name: MyObject
MyObject is being deleted
The object has been deleted
این مثال نشان میدهد که چگونه میتوان از ارجاعهای ضعیف برای مدیریت حافظه و جلوگیری از نگهداری اشیا در حافظه زمانی که دیگر نیازی به آنها نیست، استفاده کرد.
#weakref | LearnPython
میدونی 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 | LearnPython