Python for Data Science
315 subscribers
127 photos
16 videos
12 files
61 links
اطلاعات مفید جهت یادگیری پایتون برای علم داده
Download Telegram
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (SeYeD.Dev)
This media is not supported in your browser
VIEW IN TELEGRAM
دموی این زبان برنامه نویسی رو با هم ببینیم 💃

@SEYED_BAX
Please open Telegram to view this post
VIEW IN TELEGRAM
کد بالا رو در دو محیط مختلف اجرا کنید
یکی در یک فایل .py
دیگری در فایل .ipynb
نتایج متفاوت هست!

چرا؟ 😊😊

🔎 @py4ds
😱2
Python for Data Science
کد بالا رو در دو محیط مختلف اجرا کنید یکی در یک فایل .py دیگری در فایل .ipynb نتایج متفاوت هست! چرا؟ 😊😊 🔎 @py4ds
📌اختلاف این دو حالت برمیگرده به مبحث Interning که در اینجا برای مقادیر Integer در بازه‌ی
[-5, 256]
هستند.
🔺اگر دارید توی هر نوعی از شل توی پایتون (python shell , ipython, ...) کد میزنید باید حواستون باشه که این مقادیر یکبار ساخته میشن و برای همیشه از همونا استفاده میشه اما مقادیر خارج از این بازه هربار که لازم باشه از اول ساخته میشه. یعنی id اونها ممکنه با هم فرق داشته باشه
🔺اما اگر کل کد توی فایل .py به پایتون بدید اونو بهینه میکنه و تا زمانی که لازم هست مقادیر integer خارج از اون بازه رو نگه‌ می‌داره. بنابراین این مقادیر هم مثل مقادیر ذکر شده در بازه‌ی فوق فقط یکبار ساخته میشن.

🔹خلاصه هرجایی دارید از is استفاده می‌کنید حسابی حواستون رو جمع کنید که یه وقت اچتباهی کد نزنید! 😁
🔎 @py4ds
👍2
🔹دسترسی رایگان و بدون فیلترشکن به ChatGPT
سایت زیر توسط مجموعه Quora توسعه داده شده که یک سایت پرسش و پاسخ هست!
این سایت چند ماهی هست که لانچ شده و به چندتا از رباتهای چت هوش مصنوعی متصل هست. شما میتونید خیلی راحت ازشون استفاده کنید!
همینطور میتونید یک ربات مخصوص با پرامپت مخصوص برای خودتون ایجاد کنید و جوابهای شخصی‌سازی شده بگیرید!

https://Poe.com

🔎 @py4ds
🔸 در حال آماده سازی یک فایل ارائه در مورد خطرات AI هست.
تا اینجا مشکلی نیست
مشکل اونجاست که توی مانیتور پایین داره از ChatGPT سوال میپرسه!

🔎 @py4ds
😁2
Forwarded from Python Hints
AdamJohnson-SpeedupyourDjangotests.pdf
5.7 MB
این پست استثنا هست :

توی مدتی که دارم django میخونم خیلی ایراد دیدم توی کدهای توسعه داده شده توسط دوستان
من خودمم اشتباه زیاد دارم؛ ولی خب در نظر بگیرید من سنیور django نیستم و تازه شروع کردم اما آشنایی بالایی که با
‏system design, software engineering

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

یکی از معظلاتی که رو آپدیت پروژه شرکت داشتم؛ سرعت پایین کدهای تست بود و متاسفانه هیچکس هم نتونست کمکم کنه روی این موضوع

حالا به کتابی برخوردم که آرزو میکردم ۱ سال پیش پیداش کرده بودم یا حداقل یک
‏senior
بهم معرفی میکرد که بخونم.

برای اینکه کسی مثل من نشه و چون django developer بسیار داریم این پست و کتاب رو گذاشتم.

کتاب رو گذاشتم؛ چون خرید از ایران بسیار سخت بود.

Adam Johnson - Speedup your django tests

کتاب راحت ۱۰ ستاره هست؛ هم بخاطر اهمیت موضوع هم نوشتار و …
👍5
Forwarded from Django Expert (Boby Cloud)
✔️ شاید تا الان براتون پیش اومده باشه که موقع نوشتن حلقه‌های for در پایتون، با خودتون فکرکنید که شاید راه‌های بهتری هم وجود داشته باشه.

در این مقاله ۳۰ مثال پایتونیک مختلف رو بررسی میکنیم تا از نوشتن حلقه‌های for اجتناب کنیم. مثال‌هایی که با استفاده از توابع built-in پایتون به دلیل پیاده‌سازی‌های داخلی پایتون (cpython) پرفورمنس بهتری دارن تا روش های functional programming که در کامیونیتی پایتون و متدهای built-in پایتون وجود داره و ...

توضیحات بیشتر همراه با مثال‌های مختلف رو می‌تونید در این مقاله مطالعه کنید:
👉 30 Pythonic Ways To Avoid For Loops — A Decade-Long Journey Best Practices

اگر این مقاله رو مفید دیدید، ممنون میشم به اشتراک بزارید.

#python #best_practice

© @DjangoEx
📗 #معرفی_کتاب
Python Concurrency with asyncio
Matthew Fowler

🔺کتابی خوب برای یادگیری مفاهیم async در پایتون

🔎 @py4ds
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
🔹اگر از من بپرسید دوران فعلی که در اون هستیم با ظهور و بروز چه تکنولوژی، پیشرفتی مثل ایجاد کامپیوترها رو خلق می‌کنه به شما خواهم گفت «کامپیوترهای کوانتومی»

🔹بواسطه‌ی رشته تحصیلی که داشتم از حدود ۱۲ سال قبل با این مقوله آشنا بودم و اطمینان داشتم که هیچ برتری تکنولوژیکی، پیشرفتی به اندازه کامپیوترهای کوانتومی ایجاد نخواهد کرد.

🔹آنچه که الان از کامپیوترهای کلاسیکی(ترانزیستوری) می‌بینیم با به وجود اومدن کامپیوترهای کوانتومی به کلی تغییر می‌کنه. این تغییرات به قدری بزرگ هست که در حد عبور از عصر چرتکه به کامپیوتر هست.

👈در اون زمان دیگه نمیشه از چیزی مثل الگوریتم رمزنگاری RSA بهره برد چون به راحتی میشه اونو شکوند. ضمنا تا الان الگوریتم‌های کوانتومی مختلفی طراحی شده!

توضیح فیلم: در سالهای اخیر نمونه‌های مختلفی از پردازشگرهای کوانتومی در سطح آزمایشگاهی(غیرتجاری) ساخته شده اما تلاش اینتل با بقیه فرق داره و به محصول تجاری نزدیکتره!

🔺هوش مصنوعی الان با چیزی که در دوران کامپیوترهای کوانتومی خواهیم دید مثل فرق ماشین اسباب بازی با ماشین واقعی هست!
اگر قراره ازش بترسید از اون بترسید نه این!

🔎 @py4ds
👍1
Forwarded from جنگولرن
مطلب مفیدی درباره Logging از کانال @PyHints
یک دوستی دیروز راجب لاگ نویسی توی پایتون سوال داشت من به اینصورت براش توضیح دادم گفتم شاید مفید باشه :

Python logging components :

1- Loggers

وضعیت لاگ؛ همیشه لازم هست.
نشون میده هر دسته از لاگ رو چطور باید باهاش برخورد کرد بطور کلی ۵ دسته بندی برامون خیلی مهم هستندکه به ترتیب از محیط توسعه و اطلاعات بیشتر به سمت محیط پروداکشن و وضعیت خطرناک تر میریم :
debug - info - warning - error - critical

معمولا روی محیط توسعه از debug استفاده میکنیم و روی محیط پروداکشن شخصا ۲ تا نسخه نگه میدارم یک نسخه که روزانه پاک میشه (به این وضعیت اتومات حذف شدن هم logrotate گفته میشه اصطلاحا) و یک نسخه هم که ماهانه rotate میشه ولی تا ۱ سال گذشته رو نگهداری میکنیم.
نسخه روزانه فقط اطلاعات سطح info رو نگهداری میکنه؛ بیشتر برای این نگهداری میکنیم که بدونیم چه کسی؛ چه زمانی؛ چیکار کرده ؟
نسخه ماهانه اما جاهایی هست که
warning - error - critical
داشتیم؛ ی وقتایی ممکنه از لاگ info برای warning استفاده بشه : برای مثال ممکنه یک یوزر با رفتار امن شروع کنه به درخواست زیاد فرستادن به یکی از لاگین ها اینجا جایی هست که میشه لاگ info رو بررسی کرد و اطلاعات اون یوزر رو توی warning هم داشت
اما بطور کلی warning , … خطاهای نرم افزار رو لاگ میکنه مثلا اگر سرور ارور 500 برای کاربری فرستاد تحت چه شرایطی و به چه دلیل این اتفاق افتاده و …
2- Formatters
از قدیم گفتن لاگ بدون فرمت بدرد صاحب کد هم نمیخوره؛
توی اکثر سناریوها لاگ ها بعد از یک مدت بصورت اتوماتیک بررسی میشن و تحت شرایطی خاص به ادمین سرور یا توسعه دهنده یا … هشداری رو ارسال میکنند پس اینکه چه اطلاعاتی به چه صورتی نوشته بشه مهم هست و وظیفه formatter هم دقیقا همین هست. مثلا :

warning sample.py unauthorized requests to resource at 2023-06-20 17:16:15 from 192.168.1.5 response code 401

3- Handlers

بطور کلی مشخص میکنه با هر پیام لاگی که میاد چیکار باید کرد ؟ اینکه برای info فایل جدا داشته باشیم یا یک سری از اطلاعات رو داخل کنسول / ترمینال نمایش بدیم و … توسط ایشون انجام میشه
بعنوان مثال روی پروژه‌های مهم لاگ‌های سطح critical رو بصورت ایمیل یا پیامک برای چند شخص می‌فرستیم تا سریعتر بررسی بشه و این کار توسط Handler انجام میشه

 4- Filters
ممکنه توی لاگ نویسی یک سری از اطلاعات محرمانه باشه و تحت هیچ شرایطی نباید توی لاگ بیاد مثلا توی مثال بالا ممکن بود من توی اطلاعات لاگ هم بگم که خب شماره موبایل کاربری که داره اینکار رو میکنه هم داشته باشیم اما قطعا بیزینس نمیخواد این اطلاعات توی لاگ هایی که آرشیو میکنه یا ممکنه به یک شرکت دیگری برای بررسی بده وجود داشته باشه پس در نهایت یک فیلتر می‌نویسه که برخی از این اطلاعات که محرمانه هستند حذف بشه یا با یک مقدار از پیش تعیین شده جایگزین بشه.

بنظرم دونستن اهمیت این ۴ تا کامپوننت؛ برای لاگ نویسی از هرچیزی مهمتر هست.

@PyHints
👍2
Iran-Internet-v0.7.pdf
4.5 MB
🔺گزارش مفصلی از وضعیت اینترنت ایران، که توسط انجمن تجارت الکترونیک تهران تهیه شده و به‌صورت مستند نشان‌داده ایران از نظر اختلالات اینترنت، محدودیت‌ها و سرعت، وضعیت «بحرانی» دارد.

🔎 @py4ds
👍2
🏴 آغاز موسم عاشقی....

▪️سلام بر مُحـرم ....

▪️فرا رسیدن ماه محرم و ایام سوگواری و عزاداری سالار شهیدان و سرور آزادگان جهان حضرت ابا عبدالله الحسین علیه السلام و یاران با وفایش بر همه عاشقان و پیروانش تسلیت باد.
🔎 @py4ds
👍7
jamedaran
📻 جامه‌دران (از آلبوم نینوا)
موسیقی: حسین علیزاده

#موسیقی
#دورها_آوایی_ست
@doorhaavayist
👍4
🏴 عاشورای حسینی تسلیت باد 🏴

🔎@py4ds
👍8
🔺 استفاده از ساختار decorator برای سنجش زمان اجرای توابع کاربردی هست
احتمالا مثالهایی از این دست رو هم قبلا دیده باشید

اما ساختار کد بالا یک نمونه ContextManager هست که می‌تونید بدون تغییر زیاد توی کد بخش‌های مختلف اون رو زمان‌سنجی کرده و بعدا با هم مقایسه کنید.

ساختار فوق در اینجا استفاده شده است.

🔎 @py4ds
👍1
Forwarded from Sadra Codes
بررسی جوانب پایتون ۳.۱۲

از این به بعد می‌تونید fstring های تودرتو بنویسید. مثلا:
phrase = f"Hello {f"{name}"}"
# Hello Sadra

بنظرم آنچنان کاربردی نیست و فهمیدنش در نگاه اول یکم سخته. شاید هایلایترها درکش رو راحت‌تر کنن در آینده ولی یه فیچر جدید که اضافه شده و خوشم اومد، multiline fstring هست که بهتون اجازه می‌ده، اف استرینگ رو در چند خط بنویسید و حسابی expandش کنید. تازه می‌تونید در بدنه‌اش، کامنت هم بنویسید:

phrase = f"Hello {
name # User.name
}"
# Hello Sadra

بهینه‌سازی سیستم Tokenization. پایتون یه ماژول tokenizer داره که ازش واسه آنالیز و پارس کردن کلمات و حروف ولید پایتون استفاده می‌کنه. به هر چانک حروف از استرینگ ورودی توکن میگن. اکثر تول‌های linting و formatting از این ماژول واسه فرمت و لینت کردن کد پایتون استفاده می‌کنن. تا نسخه ۳.۱۱، این ماژول به زبان پایتون بود. بدلیل اضافه شدن nested fstring و مولتی لاین fstring، مجبور شدن این ماژول رو بازنویسی کنن و با C نوشتنشن و از لحاظ زمان runtime، سرعتش به شدت رفته بالا. این باعث میشه تمام tool هایی که از tokenizer استفاده می‌کنن، سریع‌تر اون ماکروهاشون ران شن.

لایبرری distutils دیپریکت شده و دیگه توی standard library قرار نداره. از این لایبرری واسه نوشتن و توزیع کردن پکیج پایتون استفاده میشد که به دلیل سرعت پایین و محدودیت‌هایی که نسبت به پکیج setuptools داشت، ملت همیشه میرفتن سمت setuptools. حتی خود pip هم به setuptools وابسته هست. اگه venv بسازین، میبینید که بصورت دیفالت، setuptools نصبه. یه نکته که هست، setuptools جزو standard library نیست و درواقع از هسته distutils پایتون استفاده می‌کنه. از اونجا که distutilsی دیگه در کار نیست و pip نسخه‌های ۲۲.۱ به بالا دیگه وابستگی به setuptools نداره، عملا هیچ ابزار رسمی‌ای واسه توزیع پکیج پایتون هم نخواهیم داشت. این هم خوبه، هم بد.

pip (>= 22.1) does not require setuptools to be installed in the environment. setuptools-based (and distutils-based) packages can still be used with pip install, since pip will provide setuptools in the build environment it uses for building a package.

حالا یه اتفاق دیگه هم افتاده. اونم اینکه venv دیگه بخشی از پکیج setuptools نیست. تا امروز بود ولی دیگه نیس. حالا چیکار میشه کرد؟ خب distutils مستقل شده و شما می‌تونید خودتون setuptools رو pip install کنید و ازش استفاده کنید و واسه venv هم، virtualenv نصب کنید. دیگه کامند زیر کار نمیکنه:

python -m venv venv

بطور کلی، از این به بعد هر محیط venv که با virtualenv می‌سازید، در isolatedترین شکل ممکن قرار دارن و site-packageتون خالی خالیه. حتی wheel هم ندارید. فقط pip رو دارید.

از این به بعد می‌تونید تایپ هینت kwargs** رو کاستومایز کنید. من خودم همیشه انوتیت می‌کردم به typing.Any ولی از این به بعد می‌تونید TypedDict رو بهش انوتیت کنید:

from typing import TypedDict, Unpack

class Values(TypedDict):
name: str
age: int

def main(**kwargs: Unpack[Values]): ...

یه تایپ هینت جدید اومده که خیلی خوشم اومد، typing.override هست. این موقعی بدرد می‌خوره که می‌خواین تایپ هینت ست کنید واسه متدی که توی subclass قراره اوررایت شه. اگه تغییری توی superclass ایجاد شه و اسم اون متد توی سوپرکلس تغییر کنه، اگه یه سیستم type checking داشته باشین یه چیز مثل mypy، حتما خطا رو می‌گیره و بهتون نشون میده. این درحالیه که اگه کد رو اجرا کنید، ممکنه خطا نگیرید و اون متد هم override نشه.

from typing import override

class A:
def greet(): ...

class B(A):
@override
def greet(): ...

توی این مثال، اگه روزی برسه که اسم متد greet توی سوپرکلس تغییر کنه به greeting، حتما type checker ارور میده ولی اگه annotate نکرده باشید، اروری دریافت نمی‌کنید و صرفا اون logic درست کار نمی‌کنه.

تمام comprehensionهایی که در بدنه فانکشن‌ها هستن، از لحاظ سرعت اجرا بهینه‌تر شدن.

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

دوتا سینتکس جدید هم اضافه شده به پایتون. یکی type هست که واسه Type Alias استفاده میشه و دیگری هم Type Parameter هست که یه مدل جدید واسه تعریف فانکشن‌ها و کلس‌های جنریک پایتونه. شیوه استفاده ازشون به این شکله:

type name = str
type age = int

قبلا باید جنریک فانکشن رو اینجوری تعریف می‌کردیم:

def greet(name: List[str]): ...

ولی الان می‌نویسیم:

type T = List[str]

def greet[T](name: T): ...

این باعث میشه که پرینسیپل DRY آسیب نبینه.
👍2
Forwarded from Python BackendHub
بزرگ ترین تغییر ۳.۱۲ نسبت به ۳.۱۱ که بنظرم صدرا اشاره نکرد بهش PEP 684 بود

A Per-Interpreter GIL
که البته فعلا تو سطح پایتون نیست و python api نداره.


ولی این تغییر تو ۳.۱۳ خودشو خیلی بیشتر نشون میده. جایی که API python اش میاد. طبق PEP 554.
https://peps.python.org/pep-0554/
جایی که ما میتونیم حالا از این تغییراتی که تو ۳.۱۲ انجام شده و API پایتونیش تو ۳.۱۳ هست استفاده کنیم‌:)

اینکه چیه و چیکار میکنه تو این پست نمیگنجه. توصیه میکنم حتما این دو PEP رو وقت بذارین و بخونید که از بقیه جلوتر باشید تا وقتی ۳.۱۳ اومد بدونید چی باید یاد بگیرید 😁 فقط یک مقایسه میکنم بین sub Interpreter و مولتی پروسس

True Parallelism -> Multiprocess: YES | Subinterpreters: Potential
Isolation -> Multiprocess: HIGH | Subinterpreters: MEDIUM
Overhead -> Multiprocess: HIGH | Subinterpreters: LOW

و توی theory حداقل باید Subinterpreters یک مموری ایزوله و هندل CPU Bound task به صورت بهینه تر رو به ما بدن که باعث میشه پایتون با استفاده از این مفهوم جدید برای real-time processing و streaming data بسیار مناسب تر شه. چرا؟‌چون میتونید یک subinterpreter داشته باشید که دیتا رو بگیره و یک subinterpreter داشته باشید که دیتا رو پروسس کنه که این ایزوله سازی باعث استفاده بهتر و بهینه تر از ریسورستون میشه و latency رو هم کاهش میده

@ManiFoldsPython
پایتون 3.12 نسخه‌ای هست که می‌تونه به صورت پایدار تا چندسال ازش استفاده بشه
بی صبرانه منتظر ارائه این نسخه هستم
راستی این نسخه توی
Ubuntu 24.04
هم استفاده میشه