Python Hints
8.95K subscribers
186 photos
11 videos
10 files
152 links
Python tips and tricks
The Good, Bad and the Ugly

توی این کانال فقط قرار هست در مورد core python صحبت کنیم.

این کانال یک بلاگ شخصی هست و پیرامون نظرات و چیزهایی که توی بیش از ۱۰ سال کد زدن یاد گرفتم (فقط برای کمک به دوستان تازه‌کار)

Admin: @Abbasi_ai
Download Telegram
#Quick

PyScript

هم به نقطه‌ای رسیده که شرکت‌ها حداقل برای prototype دارند ازش استفاده می‌کنند؛ شاید عالی نباشه ولی برای تست ایده‌ها ؛ دموها ؛ حتی ارائه به استاد توی دانشگاه و ...

واقعا جالب هست و ارزش بررسی داره

PyScript GitHub

اینو میگم چون خودم برای تست ایده مجبور به یادگیری React شدم.
👍20
#Quick

من این اخطار‌ هارو همیشه زودتر به دوستان نزدیکم میگم
گفتم ازین به بعد بعضی‌هاش رو اینجا هم بگم:

اولین :

asyncio
رو هرچه زودتر یاد بگیرید، پترن‌ها و مفاهیم برنامه‌نویسی
Async, Parallel, Concurent

قبلتر تأکید زیادی روش نداشتم، اما دیر نیست (توی ایران) روزی که حتی
Intermediate python

هم توی مصاحبه باید این مفاهیم رو کامل بدونه.

@PyHints
👍4911👌3👎1
Python Hints
#Quick من این اخطار‌ هارو همیشه زودتر به دوستان نزدیکم میگم گفتم ازین به بعد بعضی‌هاش رو اینجا هم بگم: اولین : asyncio رو هرچه زودتر یاد بگیرید، پترن‌ها و مفاهیم برنامه‌نویسی Async, Parallel, Concurent قبلتر تأکید زیادی روش نداشتم، اما دیر نیست (توی…
#Quick

برای دوستانی که تازه میخوان یاد بگیرند این موضوع رو خیلی مهمه که روی پایتون 3.9 به بعد تمرین کنید و یاد بگیرید این موضوع رو
برای همین کتابی که توی پست pin شده معرفی کردم رو فقط تایید می‌کنم نسخه پایتون اون کتاب 3.10 هست با تغییرات و باگ‌های رفع شده آموزش میده.
👍232👎1
#Quick
از پایتون درست استفاده کنید.

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

اما غیر از مورد اول :
x1 *= 2

که بهینه ترین حالت محاسبات و استفاده درست از numpy هست (وقتی میخواهید روی آرایه قبلی بنویسید) باقی موارد هر ۲ باعث خطا و terminate شدن کولب شدند.

شاید فکر کنید ۱ میلیارد عدد بزرگی هست :
۱- بستگی به موضوع داره ولی توی دنیای فعلی خیر واقعاً بزرگ نیست
۲- مدل LLAMA 2 (تلفظ : لاما) که چندروز پیش توسط meta معرفی شد کوچکترینش 7 میلیارد و بزرگترینش 70 میلیارد پارامتر داره.
۳- performance
رو همیشه باید توی بدترین حالات محاسبه کرد (برای همین Big O رو یاد گرفتیم)
❤‍🔥29👍20🤪53👎211👏1💘1
Python Hints
من محمد عباسی (@abbasi_ai) یک توسعه دهنده پایتون هستم با بیش از ۸ سال تجربه کار با پایتون (البته زمانی که دارم این پست رو می‌نویسم و باقی موارد تجربیاتم هم برای این کانال اهمیتی نداره) سعی می‌کنم نکاتی که فکر می‌کنم مهم هست تغییراتی که توی نسخه‌های اخیر…
#موقت
#Quick

دوستان من لینکدین رو هرروز چک نمی‌کنم مگر اینکه پیام یا کاری داشته باشم
اگر connect request فرستادید و طول کشید برای
Accept
کردن، عذرخواهی‌ می‌کنم 🌹

توی مواردی که نخوام accept بزنم (پروفایل مشخص نیست، از نظر شغلی‌ و ... به هم نمی‌خوریم مثلا مورد داشتیم طرف زده بود مشاور املاک، درخواست داده بود 😂) خودم reject می‌زنم. اما اگر ببینم بدون پاسخ نمی‌ذارم.

این مورد برای پیام‌های تلگرام هم صدق می‌کنه (اگر پیامی رو چندروز ندیدم یک پیام دیگه با متن up بفرستید که پیام بالا بیاد و ببینم)
👍19👌8🗿5🤪21
#Quick

این یکی از Django هست نسخه 3.2 به بعد (من فقط 3.2 و 4.2 رو تست کردم)

یکی از سرویس‌های شرکت رو چون جلوتر از
Sprint

بودم و بسیار بسیار شبیه یکی دیگه از سرویس‌هایی هست که خودم کد زده بودم بجای اینکه طبق معمول پیاده سازی کنم
Async
پیاده‌سازی کردم با اینکه فکر میکردم چون ORM هنوز async نشده و نباید خیلی کمک بزرگی بهم بکنه اما طبق خروجی profiler تقریباً ۲.۲ برابر request بیشتری رو دارم هندل می‌کنم با سخت‌افزار و کانفیگ یکسان.

دوستان یوتیوبر بنظرم، ازین دوره‌ها بسازید.

برای توسعه دهنده‌ها شاید الان خیلی چیز پر دردسری باشه نسبت به موارد دیگه که وجود داره و نیاز به
sync_to_async , ...

ولی قطعاً آینده Django به این سمت هست و برای درآمد بهتر در اون زمان، الان وقت شروع تمرین هست بنظرم
👍257👎1
#Quick

برای بالا بردن سرعت کدها اولین کاری که می‌کنید اینه که میرید
C
یاد میگیرید ؟

اشتباه نکنید، چیزی که قبل از اون نیاز دارید و ۹۹.۹٪ مشکلاتتون رو حل می‌کنه
Cython

(شاید یک آموزشی هم براش گذاشتم)

برای مثال توی پروژه اخیر، بجای یک سری از پردازش‌های مهم تصویر رو که با
numpy
پیاده سازی شده بود آوردیم روی
Cython (numpy)

زمان اجرا تمام پردازش‌ها قبل از این برای ۱ عکس توی بنچمارک ۵۳ ثانیه بود و بعد از تبدیل به Cython به حدوداً ۱ ثانیه رسید.

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

پ.ن : کتاب بروزی نداریم برای این موضوع متأسفانه ولی یکی از بهترین منابع که یادم هستم (چندسال قبل خوندم؛ با یکی از دوستان)
Cython (A guide for python programmers) by Kurt W.Smith - O'Reilly
بود و البته داکیومنت خود
Cython

حتی یاد گیری مقدماتش هم می‌تونه تا ۴-۵ برابر کدهاتون رو سریعتر کنه
👍44🤯8👌41
Rust for Python developers
این یکی واقعاً جالبه، جایگزین Flake8, isort, black, pyupgrade, ... با سرعت خیلی بیشتر. Ruff که با Rust نوشته شده، و پروژه Scipy, Pandas, FastApi, ... هم سمتش رفتند.
#Quick

پست قبلی که گذاشتم راجب uv حقیقتا از اینجا متوجه پروژه شدم که تیم‌های
Data Engineering, Backend, Test
توافق کردند از
ruff
استفاده کنند، بخصوص که حالا دیگه vs-code extension هم براش وجود داره و خیلی راحت شده کار بچه‌ها گفتند ما هم بریم سراغش و منم دارم بررسی می‌کنم که نظراتم رو راجبش بدم، نسبت به تمام کانفیگ‌هایی که داریم.


تا اینجا که خیلی خوب پیش رفته (از صبح).
👍201
#Quick


نوشتن list اطراف هر تابع باید دوبار بهش فکر کنید. اگر اون تابع یک generator باشه شما دارید بدترین کار ممکن رو می‌کنید.

این مورد رو بین بچه‌های دیتاساینس و هوش خیلی زیاد می‌بینم و بین بچه‌های بکند هم وقتی دارند روی CSV, Json و یا Json-line کار می‌کنند.

موضوع فقط مصرف زیاد رم نیست؛ موضوع سرعت هم هست اگر قرار به تمیزکاری و پردازش هر نمونه دپتا یا خط به خط هست لطفا از generator ها به درستی استفاده کنید

مشکل دارن با ما؛ ما اینجا زحمت می‌کشیم generator می‌نویسیم بعد اینا سریع می‌ندازنش توی list

تصویر ی نمونه خیلی ساده برای مثال هست (زمان اجرا کامنت شده)
👍502👎1🐳1
Python Hints
لطفاً پیام‌های پین شده کانال رو بخونید 🌹 به لطف شما عزیزان, کانال قابلیت استوری گذاشتن داره و سعی می‌کنم ازین قابلیت برای معرفی کتاب‌ها استفاده کنم تا دوستان به راحتی بتونند کتاب‌ها رو پیدا کنند. همونطور که قبلاً گفتم، فقط و فقط کتاب‌هایی رو معرفی می‌کنم…
#quick_note

تعداد افرادی که از کانال‌های جنگو و هوش مصنوعی وارد این کانال شدند درحال افزایش هست

برای همین توی بخش معرفی کتاب‌ها و استوری ها ازین به بعد کتاب‌هایی غیر از Core Python رو هم اضافه می‌کنم.

معرفی کتاب که ضرری نداره (اما لطفا غیر از موضوع Core Python) توی گروه متصل به کانال صحبتی نشه

هر موضوع دیگری : @DevChaiChat

در نهایت؛ یادآوری کنم من فقط کتابی رو معرفی می‌کنم که شخصا خونده باشم و بنظرم ارزش معرفی داشته باشه



اضافه کنم :
تمامی کتاب‌های معرفی شده رو می‌تونید با کلیک روی اسم کانال و رفتن توی قسمت Posts ببینید.
6611👍11👏2😘2❤‍🔥1🫡1
#Quick

یک سری وقت‌ها هست که توی پروژه بنا به هر دلیلی نیاز هست که یک پوشه خالی داشته باشید و اون رو روی git هم بذارید.
اکثرا برای permission درست و ... دیدم این کار انجام میشه.

حالا مساله چیه ؟ هرکی برای خودش از یک استاندارد استفاده می‌کنه (همه موارد جواب میده)
۱- اونایی که توی Mac کد میزنند:
اضافه کردن فایل .DSStore (با همچین اسمی به پوشه خالی)
۲- بچه‌های Linux :
اضافه کردن یکم فایل با نام دلخواه و شروع با . بیشترین مورد : .ignore
۳- ویندوزی‌ها :
اضافه کردن یک فایل با پسوند txt

اما برای این کار یک قرارداد نانوشته مشترک بین همه برنامه‌نویس‌ها هست اونم؛ توی اون پوشه خالی یک فایل به اسم
.gitignore
بسازید (جدای از gitignore کل پروژه هست) و محتوای داخلش این خواهد بود:

*
!.gitignore


یعنی همه چیز داخل این پوشه رو برای git نادیده بگیر به غیر از .gitignore

ربطی به موارد advance نداشت ولی چون دیدم خیلی کم رعایت میشه گفتم پست بذارم.
👍594🤨2🤝21🙊1