Python BackendHub – Telegram
Python BackendHub
7.5K subscribers
314 photos
46 videos
11 files
432 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 Python و Pass By Value بود که این مکانیزم چطور تو پایتون کار میکنه. این مثال به طور خیلی مشخص و خوشگلی توضیح میده.

خروجی کدوم یکی از حالات میشه؟
پی نوشت: عدد memory address رو یک رقمی کردم که قدرت خوانایی سوال بالا بره.

@ManiFoldsPython
3
کدوم گزینه میتونه خروجی باشه تو سوال بالا؟
Final Results
21%
گزینه ۱
23%
گزینه ۲
18%
گزینه ۳
38%
گزینه ۴
اینم quiz دوم. در واقع سوال دومش رو میشه از همین کوییز نتیجه گیری کرد.

شب هم اینکه چطور اینطوری شد و هم اینکه چرا اینطوری شد توضیح میدم 😁

پ.ن: چراشو دیشب فهمیدم :)) بقیشو تونستم جواب بدم ولی تاحالا واقعا فکر نکرده بودم چرا تو پایتون اینطوری هندل میشه این موضوع.

@ManiFoldsPython
کدوم گزینه میتون خروجی باشه تو سوال بالا؟
Final Results
11%
گزینه ۱
10%
گزینه ۲
56%
گزینه ۳
23%
گزینه ۴
اما جواب

تو پایتون چیزی به اسم 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