Python BackendHub
7.36K subscribers
306 photos
46 videos
11 files
427 links
Learning python & Backend Engineering, with Mani!

Youtube: https://www.youtube.com/@GitOverHere
Github: https://github.com/ManiMozaffar
Linkedin: https://www.linkedin.com/in/manimozaffar

تبلیغات نداریم

Admin: @Mani_nikou
Download Telegram
اما جواب

تو پایتون چیزی به اسم Pass by Reference in یا pass by value نداریم.به جاش میگیم pass by assignment
یعنی چی حالا؟ اول به کلمهassigment میپردازم و رفتارش تو پایتون|


داریم که:

a = 2
print(id(a)) # 1
a += 1
print(id(a)) # 2



چون متغیر ما mutable نیست پس وقتی که یک بلایی سرش میاریم تغییر نمیکنه. بلکه یک آبجکت جدید ساخته میشه و رفرنسی که قبلا داده بودیم از بین میره.درسته؟

اما راجب mutableها اینطوری نیست. یعنی وقتی چیزی بهشون اضافه میکنیم یا بلایی سرشون میاریم همون آبجکت تغییر میکنه.

list_a = []
print(id(list_a)) # 1
list_a.append(1)
print(id(list_a)) # 1

درواقع رفتار پایینی خیلی بهینه تره از نظر ریسورسی نسبت به رفتار بالایی ولی تو رفتار بالا ما مجبوریم اونکارو کنیم چون mutable نیستن.

حالا یعنی چی pass by assignment?
یعنی دقیقا pass by assignment


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

حالا از لحاظ ریسورسی و رم کاری ندارم به این موضوع ولی یک دلیل دیگه ای هم داشت
چون ذن پایتونه!

explicit is better than implicit

وقتی ما یک تابع صدا میکنیم و میگیم
myfunc(a=2)
پس یعنی a=2. به همین سادگی 😅
درواقع داریم ۲ رو assign میکنیم به a
دیگه پیچیدگی عجیبی نداره. مفهوم assign رو بلد باشین متوجه میشین.

ولی رفتاری که نشون میده بستگی به اون رفتار assign تغییر میکنه که mutable هست یا immutable
برای همینه که ما موقع سورت لیست مینویسیم
mylist.sort()
نمیگیم
my_list = sort(mylist)

چون اینطوری هم تو اینپوتی که بهش دادیم رو سورت میکرد هم لیست اصلیو

@ManiFoldsPython
👍16
Media is too big
VIEW IN TELEGRAM
Work life balance European countries >>>>>

سره کار یک چنل داریم که روز مرخصیو اعلام میکنیم، بیشتر خبریه تا اجازه 😂😂

@ManiFoldsPython
😁8👍4😢1
قانون جدید مهاجرتی آلمان برای IT specialist ها:

بدون مدرک تحصیلی میتونید مهاجرت کنید و blue card بگیرید.

پدر و مادر رو هم علاوه بر همسر و فرزند میتونید ببرید.

@DevTwitter | <mehdi/>
😁9👎3👍2
Screenshot 2023-06-17 162818.png
149.4 KB
کورسیه که خودم پلنشو و syllabusاش آماده کردم و قصدشو دارم استارت ظبطشو بزنم و آخر هفته ها یک یا چند اپیزود بدم.

از بالا به ترتیب شروع میکنم میام پایین.
اگه نظری چیزی دارین یا حس میکنید چیزی هست که میشه بهتر کرد به من بگین. هر کورسی که میبینید اینجا یک playlist جدا داره که چند ساعت بیشتر نمیشه.

پی نوشت: حقیقتا بین انگلیسی و فارسی موندم, احتمالا introduction بالا رو فارسی بذارم و بقیه انگلیسی چون مخاطب فارسی کم تعداده و مشابه این کورس هم کم پیدا هست.

@ManiFoldsPython
👍27🔥11😁1🤩1
میگن الگوریتم به چه دردی میخوره‌

اگه میخواستین یک rate limit request کاملا dynamic داشته باشین تو سطح gateway ا‍‍پلیکیشنتون چیکار میکردین؟

ببینید چقدر قشنگ کراکند اینو هندل میکنه :)‌

https://www.krakend.io/docs/endpoints/rate-limit/

الگوریتم باکتش:
https://www.krakend.io/docs/enterprise/throttling/token-bucket/


@ManiFoldsPython
6👍1
رودمپ دوآپس

بنظره شما، به عنوان یک بک اند دولوپر چه چیزایی رو باید از این مسیر رو بلد باشیم؟


@ManiFoldsPython
👍9
داشتم کورس تایپ چک real python رو میدیدم (پولیه رایگان نیست) که این تعریف برام جالب بود

@ManiFoldsPython
👍6
https://realpython.com/lessons/python-coding-interview-tips-overview/

این کورس هم خیلی خوبه مخصوصا برای پاسخ دادن به سوالات پایتونی که ممکنه تو مصاحبه بپرسن. پولیه بازم ولی حداقل کداشو به صورت رایگان گذاشته. اگه وقت بذارین و از gpt بپرسین و قنشگ تمرین کنید نیازی به ویدیوهاش نخواهید داشت


@ManiFoldsPython
👍8👎2
خیلی خوشم اومد از این سوال,

Return a list of the indexes of the majority element.
Majority element is the element that appears more than floor(n / 2) times.
If there is no majority element, return []

جوابشو کامنت کنید 😁
سوال خیلی راحتیه ولی خیلی راحت میشه تسلط و‌ آشنایی فرد رو به پایتون با همین سوال سنجید.


مثال ورودی خروجیش



>>> majority_element_indexes([1, 1, 2])
[0, 1]

>>> majority_element_indexes([1, 2])
[]
>>> majority_element_indexes([])
[]


@ManiFoldsPython
👍7
اما پاسخش
نزدیک ترین پاسخ برای سروش بود.

Counter
برای این هست که شما الکی کدتون رو زیاد و گنده نکنید و همون کار رو انجام میده با پرفومنس خیلی خوب. یعنی کسی که پایتون بلده نسبت به itertools و collections و built in method ها تسلط داره یا آشنایی داره حداقل که کجا باید استفاده کنه ازشون.


نکته دیگه تایپ هینت بود که سروشم اینو رعایت کرده بود تو نسخه دوم کدش.


اما ایراد سروش این بود که برای اینکه تست کنه فاکنشنش ورودی خروجی هاش درست کار میکنه پرینتشون کرده بود.

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


اون موقع میتونید فایلتونو با داک تست ران کنید و بهتون میگه اگه کدتون ایراد داشت نسبت به ورودی خروجی. من اصلا اینو نمیدونستم و دیشب فهمیدم که چرا تو داک استرینگ همچین چیزی میذارن. فکر میکردم فقط برای داکیومنت کردنه در صورتی که هم داکیومنت کردنه هم اینکه برنامه نویسی که داره اینو میخونه متوجه کارکردش شه و هم اینکه یک جور تسته خودش 😁

python -m doctest myfile.py


list comprehension
doc test
doc string
type hints
Counter


@ManiFoldsPython
👍19🔥1🤯1
بحث سیستم شد با یکی از دوستام
من ۶-۷ ماه پیش حدودا یک سیستم بستم که هنوز خیلی راضیم ازش. قیمتش نسبت به کاراییش خیلی خوب دراومد. اون موقع خیلی تحقیق کردم راجبش.

AMD Ryzen 7 7700X - 7700TL

Nvidia GeForce GTX 1660 Super - 4700 TL

Kingston FURY Beast 64GB DDR5 5200MHz CL40 Performans Rami Kit (2x32GB) - 6200TL

Samsung NVMe 500GB 1240TL

Asus Prime X670-P AMD X670 6400 MHz (OC) DDR5 Soket AM5 ATX Anakart - 7000TL

Monitor Trendyol 7500TL

قیمت ها برای اون موقع هستن که مجموعا شد ۲۵ هزار لیر که به پول اون موقع میشد ۱۲۰۰ دلار.
با مانیتور, رم ۶۴ و سی پی یو قوی. هیچ کاری نبود که روش نتونم بکنم. کارت گرافیکش هم در حد فیلم دیدن و 4k بود ولی خب برای گیم بازی کردن ایده ال نیست. اما ترجیح دادم کارت گرافیک اصلا پولی خرج نکنم براش و بیشتر تمرکز رو بذارم رو بقیه قطعات چون کارت گرافیک خیلی گرونه.

کل این سیستم ddr5 بود. اولش واقعا درک نمیکردم چقدر قدرتش فرق داره با ddr4 ولی وقتی سیستمو گرفتم چیزایی که تو سرور اجرا میکردم که رمش ۱۲۸ بود و ddr3 یا 4 بودن هم کم میاوردن ولی رو سیستم خودم خیلی راحت همونا اجرا میشدن.

پی نوشت:‌از سخت افزار خیلی کم حالیمه :))

@ManiFoldsPython
🔥6👍21👏1🎉1
من حدود ۳ هفته پیش اشتراک real python رو گرفتم. اوایلش از رو سرچش مثلا طبق سطحی و ‍learning path ای که گذاشته بود جلو میرفتم که خب مطالبشو خیلی خوشم نیومد پولیاشو. ولی اخیرا شروع کردم سرچ کردن چیزایی که ضعیفم توش و تو گوگل تهش هم real python میذارم و تهش میرسم دقیقا به همون توضیحاتی که میخوام.

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


مثلا چیزایی که من از دیروز شروع کردم به دیدن و تموم کردم :
0. چطور تو مصاحبه لایو کدینگ شبیه پایتون اکسپرت بنظر بیایم
1. دیباگینگ با pdb
2. کار با vscode و شخصی سازیش با پایتون

چیزایی که خواهم دید:
3. Python Concurrency & Parallel Programming roadmap
4. Python's assert: Debug and Test Your Code Like a Pro
5. Advanced Visual Studio Code for Python Developers
6. Decorator quiz
7. Build Robust Continuous Integration With Docker and Friends
8. Python 3.12 Preview: Support For the Linux perf Profiler
9. Automating Django Deployments with Fabric and Ansible
10. Start Managing Multiple Python Versions With pyenv (Overview)


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

@ManiFoldsPython
👍14
بنیامین عزیز هم لینک زیرو به اشتراک گذاشته
که ویدیو های realpython رو رایگان گذاشته و میتونید دانلود کنید

لینک

خیلی از ویدیو هارو نداره ولی باز نسبتا بهتره هیچیه.
@ManiFoldsPython
14👍1
Python BackendHub
دیباگ با Pdb حتما بخونید https://realpython.com/python-debugging-pdb/#using-breakpoints چیت شیت آخرش خیلی به درد بخوره. 👍 @ManiFoldsPython
بعد خوندن و تمرین با pdb خیلی باهاش حال کردم
انگار اون محدودیت هایی که دیباگر پایتون داره رو نداره
ولی سوالم اینجاست که چطور میشه دیباگر پایتون رو به pdb لینک کرد؟ یعنی مثلا یک breakpoint میزنیم بعد تو دیباگر پایتون رانش میکنیم دستورات pdb هم بتونیم ران کنیم.

آیا همچین چیزی وجود داره به صورت اکستنشن تو vscode؟ سرچ کردم ولی به جوابی نرسیدم.

@ManiFoldsPython
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
وضعیت این روز شرکت ها 😂😂😂
حواستون باشه ابهتتون از بین نره پیش جونیورا🤣
@ManifoldsPython
😁29🍌3🥴2👀1🙈1
تو نسخه 0.93 فست یک چیزی اضافه شده که خیلی قشنگه بهش میگن lifespan

ایدش از این ایشو اومده:
https://github.com/tiangolo/fastapi/issues/617

به قشنگی ایده ای که داده شده پیاده سازی نشده
ولی خیلی وقتا ایده ها خیلی قشنگن اما تو حقیقت پیاده سازیشون دشوار یا غیرممکنه.

اما فست به این شکل پیاده سازی کرده:
https://fastapi.tiangolo.com/advanced/events/

البته سباستین قول داده این lifespan رو در آینده خیلی بهتر میکنه و فعلا این نسخه رو اینطوری داده تا به نحوی backward compability رو تو ساده ترین حالت ممکن داشته باشه که یوزر ها مجبور نشن خیلی تغییر بدن کدشون رو.

@ManifoldsPython
👍6
Python BackendHub
تو نسخه 0.93 فست یک چیزی اضافه شده که خیلی قشنگه بهش میگن lifespan ایدش از این ایشو اومده: https://github.com/tiangolo/fastapi/issues/617 به قشنگی ایده ای که داده شده پیاده سازی نشده ولی خیلی وقتا ایده ها خیلی قشنگن اما تو حقیقت پیاده سازیشون دشوار یا غیرممکنه.…
من یک سوالی تو behavioural interview شده بودا ازم جالب بود گفتم به اشتراک بگذارم.
چه اشتباهی اکثر سافتور انجینر ها انجام میدن که بنظرتون نباید بکنند؟

جواب خودم فکر کردن به backward compatibility تو نسخه های breaking version بود.
نظره شما چیه؟ کامنت کنید 😅

@ManifoldsPython
👍7
Python BackendHub
من یک سوالی تو behavioural interview شده بودا ازم جالب بود گفتم به اشتراک بگذارم. چه اشتباهی اکثر سافتور انجینر ها انجام میدن که بنظرتون نباید بکنند؟ جواب خودم فکر کردن به backward compatibility تو نسخه های breaking version بود. نظره شما چیه؟ کامنت کنید…
بنظره خودم جلوی اشتباهو هروقت بگیری منفعته.
خیلی وقتا خیلی لایبریا مجبور شدن بخاطر backward compatibility یک مسیر اشتباهیو ادامه بدن چون همه داشتن همون اشتباهو تکرار میکردن.
حقیقتا خیلی خوشم اومد وقتی pydantic v2 رو دیدم و حجم تغییراتی که داشت. خیلی جاها شاید خیلی راحت میتونست backward compability به نسخه قبلی رو بده ولی اینکارو نکرد چون نخواست اشتباهاتی که تو نسخه یک داشته رو بیاره نسخه دو.

@ManifoldsPython
👍9🤮1