🧑💻PythonDev🧑💻
سادهترین راه اجرای memray استفاده از دستور run هست + flamegraph همونطور که قبلا گفتم خروجی تمام پروفایلینگهارو باید نگه دارید و نمودار لایو اینکار رو نمیکنه پس قبل از استفاده از نمودار لایو (حین اجرای برنامه تمام دستورات و مصرف مموریهارو نشون میده) ازین…
دستور
این حالت برای وقتایی هست که میخواید اثبات کنید
گرفتن ریپورت
بجای گزارشات کلی که توی تغییر سایز
همونطور که از اسمش پیداس میگه اگر از
از بین ۳ تا آپشن بالا توی این مدت شخصا فقط از
اما دوتا آپشن دوست داشتنی دیگه هم وجود داره :
همیشه بعد از اینکه دستور
هم همین کار رو میکنه اما گزارشات رو روی یک
پر استفادهترین حالت بعد از
حتما برای کاستومایز کردن خروجیها و بررسی دقیقتر داکیومنتش رو نگاه کنید (سعی کردم مهمترین مواردی که شخصا استفاده میکنم رو بگم فقط).
run
چندتا option
هم داره که هرکدوم توی شرایط خاص استفاده میشه :memray run --native <my-script>.py
این حالت برای وقتایی هست که میخواید اثبات کنید
numpy
, pandas
, ... هستند که دارند ازین میزان رم استفاده میکنند یا اینکه میخواهید بین توابع مختلفی که پیکجها ارائه میدهند مقایسه انجام بدید.گرفتن ریپورت
html
روی این حالت میتونه طولانی باشه (جزو حالاتی هست که هم bin
هم html
بهتره روی یک سیستم خروجی گرفته بشه)memray run --trace-python-allocators <my-script>.py
بجای گزارشات کلی که توی تغییر سایز
memory pool
گرفته میشه به ازای ایجاد و از بین رفتن هر آبجکت براتون گزارش مموری میده که باز هم خروجی خیلی کندتری خواهد داشت؛ و البته اطلاعات بسیار بیشتر. memray run --follow-fork <my-script>.py
همونطور که از اسمش پیداس میگه اگر از
parent process
فورک گرفته شد وضعیت مموری اون child process
رو هم توی ریپورت بیار.از بین ۳ تا آپشن بالا توی این مدت شخصا فقط از
native
استفاده کردم چندبار (باقی موارد رو نیاز نداشتم)اما دوتا آپشن دوست داشتنی دیگه هم وجود داره :
memray run --live <my-script>.py
همیشه بعد از اینکه دستور
run
رو اجرا کردم (ذخیره بشه) و بعد گزارش html
رو آماده کردم؛ تا وقتی دارم روی memory optimization
کار میکنم تنها دائما از live option
استفاده میکنم
PID, Thread, Samples, Duration, Max heap size, current heap size
و ... رو بهم میده (برای current heap size
) چون توی حالت لایو سریع تغییر میکنه از
time.sleep(10)
استفاده میکنم توی جایی که مشکوک هستم به میزان مصرف مموری و اینجوری ی پنجره ۱۰ ثانیهای برای خودم باز میکنم تا دقیق بررسی کنم توی رم چه اتفاقی داره رخ میده.memray run --live-remote <my-script>.py
هم همین کار رو میکنه اما گزارشات رو روی یک
port
خاص میفرسته (بازم من ازش استفاده نکردم)memray run --live --native <my-script>.py
پر استفادهترین حالت بعد از
live option
برای من استفاده ترکیبی از live
و native
هست (البته که حوصله آدم سر میره بعضی وقتها تا گزارشش آماده بشه)حتما برای کاستومایز کردن خروجیها و بررسی دقیقتر داکیومنتش رو نگاه کنید (سعی کردم مهمترین مواردی که شخصا استفاده میکنم رو بگم فقط).
توی این هفته ۴ بار، یک سوال مصاحبه قدیمی رو در موردش صحبت پیش اومده؛
داستان چیه، من چندین سال پیش با یک شرکت مصاحبه داشتم و مصاحبه کننده ازم یک سوال
Data structure & Algorithm
پرسید، من سوال رو خیلی سریع توضیح دادم و بعد خیلی سریع هم پاسخ صحیح رو نوشتم، در نهایت از تعجب مصاحبه کننده شک کردم که اشتباهی شده و توضیح دادم که من سطح جونیور نیستم و ... (اشتباه سمت HR بود، چون توی جلسه اول هم پیش اومده بود)
طرف ازم خواست که سوال دیگری رو مطرح کنه و دیدم داره طول میکشه روی همون سوال قبلی بهش یک پیشنهادی دادم که واقعاً خودمم تا اون لحظه کار نکرده بودم و برام جذاب بود چالش قضیه
در نهایت ایشون هم قبول کرد و رفتیم سراغ مسئله (کل جلسه همین سوال طول کشید و درنهایت هم من قبول شدم)
توی این هفته (شایدم ۲ هفته)، یکبار بعنوان مصاحبه کننده، دوبار دوستانه و یکبار هم راهنمایی بعد از مصاحبه برای یکی از دوستان بحث سوال مطرح شد :
همینجا بگم، هیچکس جواب درست حالت سختتر رو نداد.
۱- سوال اصلی مصاحبه خودم :
با استفاده از ساختار داده لیست؛ یک کلاس stack پیاده سازی کنید که یک عدد ورودی به اسم n بگیره و به تعداد n استک ایجاد کنه بطوری که دیتای تمام این استکها داخل فقط و فقط ۱ لیست ذخیره بشه.
سوال خیلی سادهاس اما دوتا پرسش داره :
۱- آیا طول لیست از پیش تعریف شده هست؟ (که قطعاً میگن بله)
۲- آیا طول stack ها باهم برابر هست ؟ (جواب اینم بله هست)
که خب شما لیست رو به n قسمت تقسیم میکنید و هر قسمت رو به یک استک میدید.
نسخهای که من به ذهنم رسید (خودمم توی مصاحبههام میپرسم) :
۱- فرض کنید طول لیست از قبل مشخص نیست و stack ها میتونند تا بینهایت ادامه داشته باشند (فرض کنید رم بینهایت داریم)
دوتا راهکاری که به ذهن خودم رسید و هنوز توی این چندسال راه دیگهای بهم نگفتند :
۱- هر عنصر لیست، یک tuple باشه که ایندکس اول tuple اندیس stack باشه و ایندکس دوم، دادهایی که ذخیره شده
اما بازم سختش کنیم، شما غیر از نوع دادههای اصلی :
int, float, decimal, ...
چیزی نمیتونید داخل stack نگه دارید (یعنی فقط دیتا)
راهنمای کوچیک راهکار دوم : از Remainder طول فعلی لیست بر n استفاده کنید و ببینید کدوم اندیس برای کدوم stack هست.
بحث سر راهکار من روی آخرین حالت سوال (که خب سوال مصاحبه یکی از دوستان هم بوده، کاملاً اتفاقی) من رو به اینجا رسوند که این موارد مثل جلسه امشب رو یک کاری باهاش بکنیم،
دوره آموزش : قطعاً مخالفم، با هرگونه پول گرفتن از بچههای تازهکار برای آموزش دادن سواد مخالفم بنظرم باید این سواد در دسترس همه باشه چه اونی که از والدینش پول میگیره چه کسی که درحال حاضر توان مالی نداره.
اسپانسر : چندباری پیش اومده، اما نهایتاً هدفشون یا تبلیغ برای فروش دیگر محصولات آموزشی هست، یا اینکه میخوان یک بخشی رایگان باشه و باقی بفروش برسه و ...
خلاصه درآمدی (پول خوبی هم داره)
لایو : که خب محدودیت ۱۰۰ نفر و زمان و ... داریم و خیلیها فرصت نمیکنند شرکت کنند و چون ذخیره هم نمیشه خیلی چیز قشنگی نمیشه نهایتاً
متن و کانال : برای آموزشهای این چنینی واقعاً خوب نیست و خیلی خیلی سخت هست
یوتیوب : مزایایی که داره اینه که شما با دیدن؛ کامنت؛ لایک انگار دارید دوره رو میخرید و پشتیبانی مالی میکنید.
معایب : زمان زیادی میگیره - من واقعاً بلد کار نیستم - subscribe,like,comment نداشته باشه انگیزه خیلی پایین میاد - درآمدی نداره (حداقل اوایل کار) - درصورت عدم حمایت برندسازی خودم خراب میشه - از همه بدتر با توجه به اوضاع اینترنت ایران میترسم خیلی دوستان نتونند روی یوتیوب تماشا کنند و همه موارد قبلی اتفاق بیوفته
اما خیلی دوست دارم یک راهکاری پیدا کنم که حداقل میزانی که خودم بلد هستم مطالب مورد نیاز رو منتقل کنم به دوستان.
همچنان به دنبال راهکار
داستان چیه، من چندین سال پیش با یک شرکت مصاحبه داشتم و مصاحبه کننده ازم یک سوال
Data structure & Algorithm
پرسید، من سوال رو خیلی سریع توضیح دادم و بعد خیلی سریع هم پاسخ صحیح رو نوشتم، در نهایت از تعجب مصاحبه کننده شک کردم که اشتباهی شده و توضیح دادم که من سطح جونیور نیستم و ... (اشتباه سمت HR بود، چون توی جلسه اول هم پیش اومده بود)
طرف ازم خواست که سوال دیگری رو مطرح کنه و دیدم داره طول میکشه روی همون سوال قبلی بهش یک پیشنهادی دادم که واقعاً خودمم تا اون لحظه کار نکرده بودم و برام جذاب بود چالش قضیه
در نهایت ایشون هم قبول کرد و رفتیم سراغ مسئله (کل جلسه همین سوال طول کشید و درنهایت هم من قبول شدم)
توی این هفته (شایدم ۲ هفته)، یکبار بعنوان مصاحبه کننده، دوبار دوستانه و یکبار هم راهنمایی بعد از مصاحبه برای یکی از دوستان بحث سوال مطرح شد :
همینجا بگم، هیچکس جواب درست حالت سختتر رو نداد.
۱- سوال اصلی مصاحبه خودم :
با استفاده از ساختار داده لیست؛ یک کلاس stack پیاده سازی کنید که یک عدد ورودی به اسم n بگیره و به تعداد n استک ایجاد کنه بطوری که دیتای تمام این استکها داخل فقط و فقط ۱ لیست ذخیره بشه.
سوال خیلی سادهاس اما دوتا پرسش داره :
۱- آیا طول لیست از پیش تعریف شده هست؟ (که قطعاً میگن بله)
۲- آیا طول stack ها باهم برابر هست ؟ (جواب اینم بله هست)
که خب شما لیست رو به n قسمت تقسیم میکنید و هر قسمت رو به یک استک میدید.
نسخهای که من به ذهنم رسید (خودمم توی مصاحبههام میپرسم) :
۱- فرض کنید طول لیست از قبل مشخص نیست و stack ها میتونند تا بینهایت ادامه داشته باشند (فرض کنید رم بینهایت داریم)
دوتا راهکاری که به ذهن خودم رسید و هنوز توی این چندسال راه دیگهای بهم نگفتند :
۱- هر عنصر لیست، یک tuple باشه که ایندکس اول tuple اندیس stack باشه و ایندکس دوم، دادهایی که ذخیره شده
اما بازم سختش کنیم، شما غیر از نوع دادههای اصلی :
int, float, decimal, ...
چیزی نمیتونید داخل stack نگه دارید (یعنی فقط دیتا)
راهنمای کوچیک راهکار دوم : از Remainder طول فعلی لیست بر n استفاده کنید و ببینید کدوم اندیس برای کدوم stack هست.
بحث سر راهکار من روی آخرین حالت سوال (که خب سوال مصاحبه یکی از دوستان هم بوده، کاملاً اتفاقی) من رو به اینجا رسوند که این موارد مثل جلسه امشب رو یک کاری باهاش بکنیم،
دوره آموزش : قطعاً مخالفم، با هرگونه پول گرفتن از بچههای تازهکار برای آموزش دادن سواد مخالفم بنظرم باید این سواد در دسترس همه باشه چه اونی که از والدینش پول میگیره چه کسی که درحال حاضر توان مالی نداره.
اسپانسر : چندباری پیش اومده، اما نهایتاً هدفشون یا تبلیغ برای فروش دیگر محصولات آموزشی هست، یا اینکه میخوان یک بخشی رایگان باشه و باقی بفروش برسه و ...
خلاصه درآمدی (پول خوبی هم داره)
لایو : که خب محدودیت ۱۰۰ نفر و زمان و ... داریم و خیلیها فرصت نمیکنند شرکت کنند و چون ذخیره هم نمیشه خیلی چیز قشنگی نمیشه نهایتاً
متن و کانال : برای آموزشهای این چنینی واقعاً خوب نیست و خیلی خیلی سخت هست
یوتیوب : مزایایی که داره اینه که شما با دیدن؛ کامنت؛ لایک انگار دارید دوره رو میخرید و پشتیبانی مالی میکنید.
معایب : زمان زیادی میگیره - من واقعاً بلد کار نیستم - subscribe,like,comment نداشته باشه انگیزه خیلی پایین میاد - درآمدی نداره (حداقل اوایل کار) - درصورت عدم حمایت برندسازی خودم خراب میشه - از همه بدتر با توجه به اوضاع اینترنت ایران میترسم خیلی دوستان نتونند روی یوتیوب تماشا کنند و همه موارد قبلی اتفاق بیوفته
اما خیلی دوست دارم یک راهکاری پیدا کنم که حداقل میزانی که خودم بلد هستم مطالب مورد نیاز رو منتقل کنم به دوستان.
همچنان به دنبال راهکار
🧑💻PythonDev🧑💻
توی این هفته ۴ بار، یک سوال مصاحبه قدیمی رو در موردش صحبت پیش اومده؛ داستان چیه، من چندین سال پیش با یک شرکت مصاحبه داشتم و مصاحبه کننده ازم یک سوال Data structure & Algorithm پرسید، من سوال رو خیلی سریع توضیح دادم و بعد خیلی سریع هم پاسخ صحیح رو نوشتم،…
پیشنهاد، انگلیسی بودن ویدئوها بیشترین پیشنهاد بود
ولی نه ممنون،
منبع انگلیسی به وفور پیدا میشه با آدمهایی که فن بیان و تجربه تدریس بسیار بسیار بیشتری از من دارند.
هدف من جامعه برنامهنویسی ایرانی هست، بخصوص تازهکارها و افرادی که به زبان انگلیسی مسلط نیستند (دارند یاد میگیرند یا ...)
پ.ن :
یوتیوب رو هنوز خیلی روش نیستم البته
خیلی دوس داشتم ی جای بزرگی داشتم، همه بچهها رو جمع میکردم اونجا و همونجا دور هم تمرین میکردیم (طوریکه کرایه اتوبوس تا تهران رو هم حتی خودم میدادم)
اینجوری مطمئن بودم هرکسی علاقه داره حتماً میتونه یاد بگیره (اینترنت و ... محدودیتش نیست)
پیشنهاد پلتفرم پولی به من ندید، ممنون ♥️
ولی نه ممنون،
منبع انگلیسی به وفور پیدا میشه با آدمهایی که فن بیان و تجربه تدریس بسیار بسیار بیشتری از من دارند.
هدف من جامعه برنامهنویسی ایرانی هست، بخصوص تازهکارها و افرادی که به زبان انگلیسی مسلط نیستند (دارند یاد میگیرند یا ...)
پ.ن :
یوتیوب رو هنوز خیلی روش نیستم البته
خیلی دوس داشتم ی جای بزرگی داشتم، همه بچهها رو جمع میکردم اونجا و همونجا دور هم تمرین میکردیم (طوریکه کرایه اتوبوس تا تهران رو هم حتی خودم میدادم)
اینجوری مطمئن بودم هرکسی علاقه داره حتماً میتونه یاد بگیره (اینترنت و ... محدودیتش نیست)
پیشنهاد پلتفرم پولی به من ندید، ممنون ♥️
✔️ استیبل بودن یا نبودن یک الگوریتم مرتب سازی
یکی از دسته بندی های موجود برای الگوریتم هایsort کردن، فاکتور stable بودن یا نبودن هست. به طور خلاصه به الگوریتمی میگن stable که:
موقع sort کردن یک لیست، اگه ۲ تا آیتم مساوی هم بودن، دقیقا به همون ترتیبی که توی لیست اولیه بودن، توی لیست مرتب شده هم ظاهر بشن.
فرض کنید به شما میگن لیست زیر رو بر اساس: اول نمره و بعد درصورت یکسان بودن نمره ها، بر اساس حروف الفبا مرتب کنید. منتاها این لیستی که به شما میدن خودش بر اساس حروف الفبا مرتب شده هست:
lst = [
("Ashkan",17),
("Bahar",18),
("Sorena",17)
]
یک راه مرسوم اینه که به این روش sort رو انجام بدیم:
lst.sort(key=lambda x: (x[1], x[0]))
کاملا درسته و هیچ اشکالی نداره. بیشتر میخواستیم درباره موضوع پست صحبت کنیم.
آیا میتونیم فقط بیایم بر اساس آیتم دوم sort ش کنیم؟ این که خود لیست بر اساس حروف الفبا مرتب شده آیا کمکی میکنه؟ یعنی:
lst.sort(key=lambda x: x[1])
اگه بدونیم الگوریتمی که استفاده شده stable هست بله میتونیم و گارانتی هست که آیتم های مساوی به همون ترتیب در خروجی قرار میگیرن، و چون در حال حاضر بر اساس حروف الفبا مرتب شده هستن، اون افرادی که نمره ی برابر دارن اتوماتیک بر اساس حروف الفبا هم مرتب هستن.
خروجی هردو:
[
('Ashkan', 17),
('Sorena', 17),
('Bahar', 18)
]
پایتون از Tim Sort استفاده میکنه و stable هست.
چند تا از الگوریتم های مرتب سازی استیبل:
• Insertion Sort
• Merge Sort
• Bubble Sort
• Tim Sort
و نقطهی مقابلشون:
• Heap Sort
• Selection Sort
• Quick Sort
یکی از دسته بندی های موجود برای الگوریتم هایsort کردن، فاکتور stable بودن یا نبودن هست. به طور خلاصه به الگوریتمی میگن stable که:
موقع sort کردن یک لیست، اگه ۲ تا آیتم مساوی هم بودن، دقیقا به همون ترتیبی که توی لیست اولیه بودن، توی لیست مرتب شده هم ظاهر بشن.
فرض کنید به شما میگن لیست زیر رو بر اساس: اول نمره و بعد درصورت یکسان بودن نمره ها، بر اساس حروف الفبا مرتب کنید. منتاها این لیستی که به شما میدن خودش بر اساس حروف الفبا مرتب شده هست:
lst = [
("Ashkan",17),
("Bahar",18),
("Sorena",17)
]
یک راه مرسوم اینه که به این روش sort رو انجام بدیم:
lst.sort(key=lambda x: (x[1], x[0]))
کاملا درسته و هیچ اشکالی نداره. بیشتر میخواستیم درباره موضوع پست صحبت کنیم.
آیا میتونیم فقط بیایم بر اساس آیتم دوم sort ش کنیم؟ این که خود لیست بر اساس حروف الفبا مرتب شده آیا کمکی میکنه؟ یعنی:
lst.sort(key=lambda x: x[1])
اگه بدونیم الگوریتمی که استفاده شده stable هست بله میتونیم و گارانتی هست که آیتم های مساوی به همون ترتیب در خروجی قرار میگیرن، و چون در حال حاضر بر اساس حروف الفبا مرتب شده هستن، اون افرادی که نمره ی برابر دارن اتوماتیک بر اساس حروف الفبا هم مرتب هستن.
خروجی هردو:
[
('Ashkan', 17),
('Sorena', 17),
('Bahar', 18)
]
پایتون از Tim Sort استفاده میکنه و stable هست.
چند تا از الگوریتم های مرتب سازی استیبل:
• Insertion Sort
• Merge Sort
• Bubble Sort
• Tim Sort
و نقطهی مقابلشون:
• Heap Sort
• Selection Sort
• Quick Sort
#Roadmap 2023
این پیام توی چندروز آینده، آپدیت میشه
اینبار با فرض اینکه مقدمات پایتون رو میدونید شروع میکنم، توی ایران شاید حتی باید بگم با فرض اینکه پایتون رو در سطح Senior بلد هستید (بدون تعارف ۹۸٪ ایرانیهایی که توی لینکدین میزنن
Senior Python Developer
واقعاً سطحاشون این نیست)
مهمتر اینکه، من این RoadMap رو برای پیدا کردن شغل نوشتم؛ گوشه ذهنم
۱- اول باید پایتون رو حرفهای باشید، بدون تعارف مرحله دوم مصاحبه حرفهای شما ارزیابی زبان برنامهنویسی هست که اعلام کردید و سطحی که گفتید و مهمتر از اون
Data structure & Algorithm
پس اولین کتابی که ۱۰۰٪ باید بخونید
Fluent Python 2nd Edition
و بعد از اون :
Data Structure & Algorithm in Python
این موارد که تموم شد، بخش زیادی از مرحله اول و دوم مصاحبه رو با موفقیت جلو میبرید، غیر از سوالات هوش مصنوعی (البته تمام مراحل به soft skills ها هم بستگی داره)
بعد از این باید بتونید، دیتا رو اصطلاحاً مثل موم توی دست بگیرید پس برای دیتای
رو بدونید اما توی همین راستا :
هم لازمه ولی نرید بشینید کل توابع رو حفظ، چون به لطف گوگل همرو پیدا میکنید چیزی که خیلی حرفهای باید بدونید، سرعت بخشیدن به کدها هست
توی نامپای بهتره فرق
رو بدونید،
نیست.
برای
آپدیتهای این پست وقتی تموم میشه که
Pin
بشه روی کانال
این پیام توی چندروز آینده، آپدیت میشه
اینبار با فرض اینکه مقدمات پایتون رو میدونید شروع میکنم، توی ایران شاید حتی باید بگم با فرض اینکه پایتون رو در سطح Senior بلد هستید (بدون تعارف ۹۸٪ ایرانیهایی که توی لینکدین میزنن
Senior Python Developer
واقعاً سطحاشون این نیست)
مهمتر اینکه، من این RoadMap رو برای پیدا کردن شغل نوشتم؛ گوشه ذهنم
ML Engineering
رو هم دارم، نه Researcher
حرفهای شدن؛ البته که ی سطحی از این موارد رو بدونید.۱- اول باید پایتون رو حرفهای باشید، بدون تعارف مرحله دوم مصاحبه حرفهای شما ارزیابی زبان برنامهنویسی هست که اعلام کردید و سطحی که گفتید و مهمتر از اون
Data structure & Algorithm
پس اولین کتابی که ۱۰۰٪ باید بخونید
Fluent Python 2nd Edition
و بعد از اون :
Data Structure & Algorithm in Python
این موارد که تموم شد، بخش زیادی از مرحله اول و دوم مصاحبه رو با موفقیت جلو میبرید، غیر از سوالات هوش مصنوعی (البته تمام مراحل به soft skills ها هم بستگی داره)
بعد از این باید بتونید، دیتا رو اصطلاحاً مثل موم توی دست بگیرید پس برای دیتای
tabular
لازمه که Pandas
رو بدونید اما توی همین راستا :
Numpy, Matplotlib
کتابی که برای نامپای معرفی میکنم برای سال ۲۰۱۷ هست قدیمی شاید باشه اما بسیار بسیار عالی و فوق العاده هست (خیلی دنبالش گشتم توی این سالها امروز اتفاقی پیداش کردم)
From Python to Numpyهم لازمه ولی نرید بشینید کل توابع رو حفظ، چون به لطف گوگل همرو پیدا میکنید چیزی که خیلی حرفهای باید بدونید، سرعت بخشیدن به کدها هست
توی نامپای بهتره فرق
numpy
معمول و mkl
و ... رو بدونید (ml engineer
) Array programming, vectorization
رو بدونید،
for loop
رو حذف کردن و بجاش از np.vectorize
گذاشتن اسمش Vectorization
نیست.
برای
matplotlib
هم باید بتونید باهاش storytelling
انجام بدید، کاربر عادی باید بتونه با کمترین توضیح شما هدف نمودار و ... ایی که نمایش دادید رو متوجه بشه.آپدیتهای این پست وقتی تموم میشه که
Pin
بشه روی کانال
🧑💻PythonDev🧑💻 pinned «#Roadmap 2023 این پیام توی چندروز آینده، آپدیت میشه اینبار با فرض اینکه مقدمات پایتون رو میدونید شروع میکنم، توی ایران شاید حتی باید بگم با فرض اینکه پایتون رو در سطح Senior بلد هستید (بدون تعارف ۹۸٪ ایرانیهایی که توی لینکدین میزنن Senior Python Developer…»
Snap.png
1.6 MB
Let's dig in a bit :) 🐕
سه حالت برای کش وجود داره,
در حالت اول، هیچ کشی انجام نمیشه و تنها آمار کلی از تعداد بارهایی که تابع فراخوانی شده ثبت میشه.
در حالت دوم، کش سادهای بدون محدودیت سایز وجود دارد. در این حالت، نتیجهی تابع برای ورودیهای مشابه ذخیره شده و برای بارهای بعدی فراخوانی میشود.
در حالت سوم، سایز کش محدود شده است. در این حالت، نتایج قدیمیتر ترک میشوند و به جای آنها، نتایج جدیدی که اخیرا استفاده شدهاند، ذخیره میشوند. پس وقتی maxsize پر شد بهتون ارور نمیده :)). جالبه نه؟
سه حالت برای کش وجود داره,
در حالت اول، هیچ کشی انجام نمیشه و تنها آمار کلی از تعداد بارهایی که تابع فراخوانی شده ثبت میشه.
در حالت دوم، کش سادهای بدون محدودیت سایز وجود دارد. در این حالت، نتیجهی تابع برای ورودیهای مشابه ذخیره شده و برای بارهای بعدی فراخوانی میشود.
در حالت سوم، سایز کش محدود شده است. در این حالت، نتایج قدیمیتر ترک میشوند و به جای آنها، نتایج جدیدی که اخیرا استفاده شدهاند، ذخیره میشوند. پس وقتی maxsize پر شد بهتون ارور نمیده :)). جالبه نه؟
من همیشه به یک چیزی اعتقاد دارم و آن، دید مهندسی است. از خصوصیات مفید و بزرگ دانشگاه خوب رفتنم، همین دید مهندسی است.
حالا این دید مهندسی یعنی چی؟
یعنی شما وقتی بدونید memory management چیست و GC چه کاری تو پایتون انجام میدهد، باعث میشود کدی که مینویسید، memory friendlyتر باشد.
یا وقتی SQL بلدید و PostgreSQL هم بلدید، باعث میشود خیلی وقتا query بنویسید که به جای ۳ بار هیت، یک هیت به دیتابیس بزند. out of box ترش این است که اگر query که میزنید، read هست، چند تا read replication بسازید و horizentonal scaling انجام دهید تا سرعت query بهتر شود. اگر میبینید query که میزنید، مثلاً ۱۰ درصد ریزالت کل دیتابیستون است و حجیم است، از طرفی مثلاً ۲ تا column خیلی استفاده میشود توی آن query، آن وقت میتوانید ترکیب آن دو تا column را ایندکس کنید تا پرفورمنس بهتری بگیرید. اما اگر ریزالت برگشتی ۷۰ درصد دیتابیستون باشد، آن موقع ایندکسها سربار دیتابیستون میشوند و نه تنها کمک نمیکنند بلکه سرعت شما را هم کاهش میدهند.
به این میگویند دید مهندسی. یعنی بدانید از چه چیزی کجا و به چه اندازهای استفاده کنید.
همه اینها را گفتم تا برسم به این کتاب:
https://www.amazon.com/Designing-Data-Intensive-Applications-Reliable-Maintainable/dp/1449373321
این کتاب به شما یک دید مهندسی فوقالعاده میدهد. تازه شروع کردم و میتونم بگم محشره ✌️
حالا این دید مهندسی یعنی چی؟
یعنی شما وقتی بدونید memory management چیست و GC چه کاری تو پایتون انجام میدهد، باعث میشود کدی که مینویسید، memory friendlyتر باشد.
یا وقتی SQL بلدید و PostgreSQL هم بلدید، باعث میشود خیلی وقتا query بنویسید که به جای ۳ بار هیت، یک هیت به دیتابیس بزند. out of box ترش این است که اگر query که میزنید، read هست، چند تا read replication بسازید و horizentonal scaling انجام دهید تا سرعت query بهتر شود. اگر میبینید query که میزنید، مثلاً ۱۰ درصد ریزالت کل دیتابیستون است و حجیم است، از طرفی مثلاً ۲ تا column خیلی استفاده میشود توی آن query، آن وقت میتوانید ترکیب آن دو تا column را ایندکس کنید تا پرفورمنس بهتری بگیرید. اما اگر ریزالت برگشتی ۷۰ درصد دیتابیستون باشد، آن موقع ایندکسها سربار دیتابیستون میشوند و نه تنها کمک نمیکنند بلکه سرعت شما را هم کاهش میدهند.
به این میگویند دید مهندسی. یعنی بدانید از چه چیزی کجا و به چه اندازهای استفاده کنید.
همه اینها را گفتم تا برسم به این کتاب:
https://www.amazon.com/Designing-Data-Intensive-Applications-Reliable-Maintainable/dp/1449373321
این کتاب به شما یک دید مهندسی فوقالعاده میدهد. تازه شروع کردم و میتونم بگم محشره ✌️
اینو هرچی بیشتر دیباگ میکنم I’m دارک تر میشه:)) امروز با یکی از دوستان داشتیم دیباگش میکردیم که متوجه شدیم وقتی از asyncio.get_event_loop تو ویندوز استفاده میکنید یک پورت باز میکنه و این اصلا ربطی به undetected نداشت.
حالا اینکه چرا پورت باز میشه نمیدونم ولی این تو windows_event.py هست تو پایتون, و تو ویندوز اتفاق میفته.
نکته جالب اینجاست که gc وقتی آبجکتی رو کالکت میکنه که احساس میکنه نیاز به کالکت شدن داره, و برای port exhaustion تعریف نشده. پس حتی متود
خلاصه اگه از asyncio.get_event_loop رو ویندوز استفاده میکنید حواستون به این نکته باشه که حتما باید close بخوره وگرنه هم مموری لیک خواهید داشت و هم port exhaustion.
سعی کردم PR بزنم به پایتون, اول فکر کردم مشکل از asyncio هست ولی ظاهرا مشکل از gc هست و gc خیلی پیچیده تر و ادونس تر از سطح منه که بخوام PR بزنم و این مشکلو برطرف کنم. بنابراین issue میزنم 😁
حالا اینکه چرا پورت باز میشه نمیدونم ولی این تو windows_event.py هست تو پایتون, و تو ویندوز اتفاق میفته.
نکته جالب اینجاست که gc وقتی آبجکتی رو کالکت میکنه که احساس میکنه نیاز به کالکت شدن داره, و برای port exhaustion تعریف نشده. پس حتی متود
__del__
که خودشون نوشتن هیچوقت صدا زده نمیشه, به جز زمانی که اسکریپت متوقف میشه.خلاصه اگه از asyncio.get_event_loop رو ویندوز استفاده میکنید حواستون به این نکته باشه که حتما باید close بخوره وگرنه هم مموری لیک خواهید داشت و هم port exhaustion.
سعی کردم PR بزنم به پایتون, اول فکر کردم مشکل از asyncio هست ولی ظاهرا مشکل از gc هست و gc خیلی پیچیده تر و ادونس تر از سطح منه که بخوام PR بزنم و این مشکلو برطرف کنم. بنابراین issue میزنم 😁
🧑💻PythonDev🧑💻
اینو هرچی بیشتر دیباگ میکنم I’m دارک تر میشه:)) امروز با یکی از دوستان داشتیم دیباگش میکردیم که متوجه شدیم وقتی از asyncio.get_event_loop تو ویندوز استفاده میکنید یک پورت باز میکنه و این اصلا ربطی به undetected نداشت. حالا اینکه چرا پورت باز میشه نمیدونم…
میتونید از این کد نمونه برا تست استفاده کنید :
import asyncio
import psutil
import os
import gc
def check_connections():
"""Check count of ESTABLISHED connections."""
return len([
conn for conn in psutil.net_connections()
if conn.status == 'ESTABLISHED' and conn.pid == os.getpid()
])
loop = asyncio.get_event_loop()
print(check_connections()) #2
loop = None # or del loop
gc.collect()
print(check_connections()) #2
یک چیز خیلی جالب متوجه شدم. درواقع وقتی تو پایتون میگیم Optional یعنی required 😅😅 اما None هم میگیره.
پایدنتیکمو آپدیت کردم پروژم به ارور میخورد
کدم اینطوری بود
پایدنتیکمو آپدیت کردم پروژم به ارور میخورد
کدم اینطوری بود
class LinkedinData(BaseModel):جالبه, آپشنال required هست ولی میتونه none باشه. پس آپشنالی که درواقع باید آپشنال باشه آپشنال نیست 😂😂
ads_id: Optional[str]
obj = LinkedinData() # Error
obj = LinkedinData(ads_id=None) # No Error
خلاصه
مواردی که به نظر من یک بک اند کار برای کار تو شرکت های مدرن خارجی و گرفتن جاب آفر داخلشون باید بلد باشه, طبق تجربه این چند وقتم داخل مصاحبه ها و جاب هایی که دیدم:
1. آشنایی با گیت
2. تست نویسی
3. آشنایی با github action برای نوشتن فایل work flow yaml
4. درک عمیق تر از پایتون (خوندن کتابی مثل fluent python یا python cook book)
تسلط به پترن دیزاین ها
5. آشنایی با paradigms های مختلف برنامه نویسی
6. الگوریتم
7. تسلط روی SQL
8. آشنایی با MySQL یا PostgreSQL.
9. آشنایی با داکر و داکر کامپوز
10. آشنایی با مفاهیم Event driven architecture, SOA, microservice و Monolithic
11. تسلط رو یک فریم ورک microservice friendly مثل FastAPI یا Flask
12. آشنایی با یک فریم ورک Monolithic مثل جنگو میتونه مزیت خوبی باشه.
13. آشنایی با یک سرویس کلاد (AWS/Azure/GCP) در حد نیاز بک اند. معمولا certificate های مشخصی دارن که میتونید راجبشون تحقیق کنید و تو اون مسیری که مربوط به بک اند دولوپر میشه برین.
14. آشنایی با دیتابیس های کلاد مثل amazon rds
15. آشنایی با serverless و نمونش داخل کلاد مثل AWS Lambda
16. آشنایی با k8s در حد نوشتن فایل yaml سرویستون
17. آشنایی با یک ابزار IAC مثل terraform
(از بین ترافورم یا k8s و داکر, معمولا رو یکیش تمرکز میکنن شرکتا. و تو اغلب آگهی ها هم دیدم وزن بیشتر سمت داکر و k8s بوده تا ترافورم)
1. آشنایی با گیت
2. تست نویسی
3. آشنایی با github action برای نوشتن فایل work flow yaml
4. درک عمیق تر از پایتون (خوندن کتابی مثل fluent python یا python cook book)
تسلط به پترن دیزاین ها
5. آشنایی با paradigms های مختلف برنامه نویسی
6. الگوریتم
7. تسلط روی SQL
8. آشنایی با MySQL یا PostgreSQL.
9. آشنایی با داکر و داکر کامپوز
10. آشنایی با مفاهیم Event driven architecture, SOA, microservice و Monolithic
11. تسلط رو یک فریم ورک microservice friendly مثل FastAPI یا Flask
12. آشنایی با یک فریم ورک Monolithic مثل جنگو میتونه مزیت خوبی باشه.
13. آشنایی با یک سرویس کلاد (AWS/Azure/GCP) در حد نیاز بک اند. معمولا certificate های مشخصی دارن که میتونید راجبشون تحقیق کنید و تو اون مسیری که مربوط به بک اند دولوپر میشه برین.
14. آشنایی با دیتابیس های کلاد مثل amazon rds
15. آشنایی با serverless و نمونش داخل کلاد مثل AWS Lambda
16. آشنایی با k8s در حد نوشتن فایل yaml سرویستون
17. آشنایی با یک ابزار IAC مثل terraform
(از بین ترافورم یا k8s و داکر, معمولا رو یکیش تمرکز میکنن شرکتا. و تو اغلب آگهی ها هم دیدم وزن بیشتر سمت داکر و k8s بوده تا ترافورم)
🧑💻PythonDev🧑💻 pinned «مواردی که به نظر من یک بک اند کار برای کار تو شرکت های مدرن خارجی و گرفتن جاب آفر داخلشون باید بلد باشه, طبق تجربه این چند وقتم داخل مصاحبه ها و جاب هایی که دیدم: 1. آشنایی با گیت 2. تست نویسی 3. آشنایی با github action برای نوشتن فایل work flow yaml 4.…»
خب دوستان فصل هایی که قراره شروع کنیم برای پایتون مقدماتی به شرح ذیل است :
فصل اول : آشنایی با برنامه نویسی
پایتون
شامل :
تاریخچه پایتون
1.نصب پایتون 2.variables-expression-statements
3.Boolean
4.دستورات شرطی پایتون - if else
5.نوشتن برنامه در فایل
6. تفاوت پایتون دو و سه
فصل دوم : حلقه های تکرار و تابع در پایتون
شامل :
1.کار با توابع پایتون - functions
2.حلقه های تکرار در پایتون - while
3.حلقه تکرار for در پایتون
4.بازی حدس عدد
فصل سوم : ساختارهای داده در پایتون
شامل :
1.کار با رشته ها در پایتون(strings)
2.کار با لیست ها(lists)
فصل چهارم : کتابخانه ها در پایتون
شامل :
1.کتابخانه های استاندارد پایتون
2.جست و جو در کتابخانه های دیگر پایتون
فصل پنجم : کار با فایل های اکسل در پایتون
شامل :
2.فایل های csv در پایتون
سعی میکنم این اموزش ها رو تو یه هفته براتون به صورت کامل توضیح بدم دوستانی که موافق هستن تایید کنن تا من با جزئیات کامل براشون اموزش ها رو کامل کنم
فصل اول : آشنایی با برنامه نویسی
پایتون
شامل :
تاریخچه پایتون
1.نصب پایتون 2.variables-expression-statements
3.Boolean
4.دستورات شرطی پایتون - if else
5.نوشتن برنامه در فایل
6. تفاوت پایتون دو و سه
فصل دوم : حلقه های تکرار و تابع در پایتون
شامل :
1.کار با توابع پایتون - functions
2.حلقه های تکرار در پایتون - while
3.حلقه تکرار for در پایتون
4.بازی حدس عدد
فصل سوم : ساختارهای داده در پایتون
شامل :
1.کار با رشته ها در پایتون(strings)
2.کار با لیست ها(lists)
فصل چهارم : کتابخانه ها در پایتون
شامل :
1.کتابخانه های استاندارد پایتون
2.جست و جو در کتابخانه های دیگر پایتون
فصل پنجم : کار با فایل های اکسل در پایتون
شامل :
2.فایل های csv در پایتون
سعی میکنم این اموزش ها رو تو یه هفته براتون به صورت کامل توضیح بدم دوستانی که موافق هستن تایید کنن تا من با جزئیات کامل براشون اموزش ها رو کامل کنم
🧑💻PythonDev🧑💻 pinned «خب دوستان فصل هایی که قراره شروع کنیم برای پایتون مقدماتی به شرح ذیل است : فصل اول : آشنایی با برنامه نویسی پایتون شامل : تاریخچه پایتون 1.نصب پایتون 2.variables-expression-statements 3.Boolean 4.دستورات شرطی پایتون - if else 5.نوشتن برنامه در فایل 6.…»
سلام دوستان ، Fxl هستم 😁🖐🏻
قراره ی دوره مقدماتی جذاب پایتون رو باهمدیگه شروع کنیم و کم کم برسیم به سطح های بالاتر و ...
خب اول از همه باید بدونیم که چرا پایتون یاد بگیریم؟؟
چه تعداد زبان برنامه نویسی وجود داره و چه فرقی با هم دارند؟
چرا پایتون انتخاب مناسبیه؟
🔵زبان های برنامه نویسی مختلف قابلیت ها و کاربرد های مختلفی دارند و هر کدوم دارای نقاط قوت و ضعف خاص خود هستند.
طبق آخرین رتبه بندی انجمن برنامه نویسی TIOBE ، پایتون یکی از 10 زبان برنامه نویسی محبوب جهان است .
پایتون یک زبان برنامه نویسی عمومی و سطح بالاس.
می تونید از پایتون برای توسعه برنامه های رابط کاربری گرافیکی دسکتاپ ، وب سایت ها و برنامه های کاربردی وب استفاده کنید.
🔵در بین این زبان ها پایتون یکی از محبوب ترین زبان هاست ، ولی چرا پایتون؟!
1) یادگیری پایتون بسیار راحته و غالبا به افرادی که می خوان برنامه نویسی رو شروع کنند ، پایتون معرفی میشه.
2) پایتون زبان پر کاربردیه و در زمینه های مختلف می توان از آن استفاده کرد ، برنامه نویسی وب با فریمورک جنگو ، طراحی اپلیکیشن موبایل با فریمورک kivy ، برای محاسبات علمی و الگوریتم های یادگیری ماشین و کارهای آماری و....
3) سومین ویژگی مهم پایتون کتابخانه های زیاد اون هستن که برنامه نویسی رو راحتتر می کنه و شما می تونید از کد های افرادی دیگر استفاده کنید.
علاوه بر این ، پایتون ، به عنوان یک زبان برنامه نویسی سطح بالا ، به شما اجازه میده تا در کنار توجه به وظایف برنامه نویسی رایج ، بر روی عملکرد اصلی برنامه تمرکز کنید .
قوانین نحوی ساده این زبان برنامه نویسی باعث میشه که بتونید پایه و اساس کد ها رو خوانا بنویسید و برنامه رو طوری بنویسید که قابلیت نگه داری و پشتیبانی آن حفظ بشه .
همچنین دلایل متعددی وجود داره که چرا پایتون رو به سایر زبان های برنامه نویسی ترجیح بدید:))
#مقدمه
#پایتون_مقدماتی
#چرا_پایتون
قراره ی دوره مقدماتی جذاب پایتون رو باهمدیگه شروع کنیم و کم کم برسیم به سطح های بالاتر و ...
خب اول از همه باید بدونیم که چرا پایتون یاد بگیریم؟؟
چه تعداد زبان برنامه نویسی وجود داره و چه فرقی با هم دارند؟
چرا پایتون انتخاب مناسبیه؟
🔵زبان های برنامه نویسی مختلف قابلیت ها و کاربرد های مختلفی دارند و هر کدوم دارای نقاط قوت و ضعف خاص خود هستند.
طبق آخرین رتبه بندی انجمن برنامه نویسی TIOBE ، پایتون یکی از 10 زبان برنامه نویسی محبوب جهان است .
پایتون یک زبان برنامه نویسی عمومی و سطح بالاس.
می تونید از پایتون برای توسعه برنامه های رابط کاربری گرافیکی دسکتاپ ، وب سایت ها و برنامه های کاربردی وب استفاده کنید.
🔵در بین این زبان ها پایتون یکی از محبوب ترین زبان هاست ، ولی چرا پایتون؟!
1) یادگیری پایتون بسیار راحته و غالبا به افرادی که می خوان برنامه نویسی رو شروع کنند ، پایتون معرفی میشه.
2) پایتون زبان پر کاربردیه و در زمینه های مختلف می توان از آن استفاده کرد ، برنامه نویسی وب با فریمورک جنگو ، طراحی اپلیکیشن موبایل با فریمورک kivy ، برای محاسبات علمی و الگوریتم های یادگیری ماشین و کارهای آماری و....
3) سومین ویژگی مهم پایتون کتابخانه های زیاد اون هستن که برنامه نویسی رو راحتتر می کنه و شما می تونید از کد های افرادی دیگر استفاده کنید.
علاوه بر این ، پایتون ، به عنوان یک زبان برنامه نویسی سطح بالا ، به شما اجازه میده تا در کنار توجه به وظایف برنامه نویسی رایج ، بر روی عملکرد اصلی برنامه تمرکز کنید .
قوانین نحوی ساده این زبان برنامه نویسی باعث میشه که بتونید پایه و اساس کد ها رو خوانا بنویسید و برنامه رو طوری بنویسید که قابلیت نگه داری و پشتیبانی آن حفظ بشه .
همچنین دلایل متعددی وجود داره که چرا پایتون رو به سایر زبان های برنامه نویسی ترجیح بدید:))
#مقدمه
#پایتون_مقدماتی
#چرا_پایتون
🔶چند دلیل برای اینکه باید برنامه های نرم افزاریتون رو در پایتون بنویسید.
🔹1)کدهای قابل خواندن و قابل نگهداری :
اولین دلیل از دلایل انتخاب پایتون ، برای برنامه نویسی ، قابلیت نگهداری و خوانایی کدهاست .
هنگام نوشتن یک برنامه نرم افزاری ، باید روی کیفیت کد منبع آن تمرکز کنید تا نگهداری و به روز رسانی را ساده کنید ، قوانین نحوی پایتون به شما امکان اینو میده که مفاهیم رو بدون نوشتن کد اضافی بیان کنید .
در عین حال ، پایتون برخلاف سایر زبان های برنامه نویسی ، بر خوانایی کد تاکید می کنه ، و به شما این اجازه رو میده که از کلمات انگلیسی به جای علائم نگارشی استفاده کنید ، از این رو ، می تونید از پایتون برای ساخت برنامه های سفارشی بدون نوشتن کد اضافی استفاده کنید .
پایه کد خوانا و تمیز به شما کمک می کنه تا نرم افزار رو بدون صرف زمان و تلاش اضافی ، نگهداری و به روز رسانی کنید.
🔹2) پارادایم های برنامه نویسی چند گانه:
مانند سایر زبان های برنامه مدرن ، پایتون نیز از چندین پارادایم برنامه نویسی پشتیبانی می کنه .
پایتون به طور کامل از برنامه نویسی شی گرا و ساخت یافته پشتیبانی می کنه ، علاوه بر این ، ویژگی های زبان آن از مفاهیم مختلفی در برنامه نویسی کاربردی و جنبه گرا پشتیبانی می کنه.
در عین حال ، پایتون همچنین دارای یک سیستم نوع پویا و مدیریت خودکار حافظه است .
پارادایم های برنامه نویسی و ویژگی های زبان به شما کمک می کنه تا از پایتون برای توسعه برنامه های کاربردی نرم افزاری بزرگ و پیچیده استفاده کنید.
🔹3) سازگار با پلتفرم و سیستم های اصلی و بزرگ :
در حال حاضر پایتون از بسیاری از سیستم عامل ها پشتیبانی می کنه ، حتی می تونید از مفسرهای پایتون برای اجرای کد روی پلتفرم ها و ابزارهای خاص استفاده کنید.
همچنین ، پایتون یک زبان برنامه نویسی مفسری است !
این ویژگی ، به این امکان رو میده که یک کد رو بدون کامپایل مجدد بر روی چندین پلتفرم اجرا کنید و فورا تاثیر تغییرات ایجاد شده در کد رو بررسی کنید ، این ویژگی به شما کمک می کنه تا بدون اینکه زمان توسعه ی کد بیشتر میشه ، تغییراتی در کد اینجاد کنید.
یک برنامه نویس ارزش این ویژگی رو خیلی خوووب متوجه میشه:))
🔹4) کتابخونه استاندارد قوی :
کتابخونه استاندارد بزرگ و قوی اون باعث میشه پایتون نسبت به سایر زبان های برنامه نویسی برتری ویژه ای داشته باشه ، کتابخونه ی استاندارد به شما این امکان رو میده که امکانات و خواسته های مورد نظرتون رو از بین طیف گسترده ای از ماژول ها مطابق با نیازهای دقیق خودتون انتخاب کنید ، هر ماژول به شما امکان میده تا بدون نوشتن کد اضافی ، عملکردی رو به برنامه پایتون اضافه کنید .
🔹5) بسیاری از چارچوپ ها و ابزارهای منبع باز :
متن باز بودن بسیاری از منابع ، از دیگر دلایل انتخاب پایتون هست ، به عنوان یک برنامه نویسی متن باز ، پایتون به شما کمک می کنه تا هزینه توسعه نرم افزار رو به میزان قابل توجهی کاهش بدین.
حتی می تونید از چندین چارچوپ ، کتابخانه و ابزارهای توسعه منابع باز پایتون برای کاهش زمان توسعه بدون افزایش هزینه ازش استفاده کنید.
حتی شما می تونین پایتون و ابزارهای توسعه مورد نظرتون رو با توجه به نیازهای دقیق خود ، از میان طیف گسترده ای از چارچوپ های منبع باز انتخاب کنید ، به عنوان مثال ، می تونین با استفاده از چارچوپ های وب قوی پایتون مانند جنگو ، فلاسک ، پیرامید ، بطری و Cherrypy ، توسعه برنامه های تحت وب رو ساده و سرعت ببخشین.
به همین ترتیب ، می تونین توسعه برنامه رابط کاربری گرافیکی دسکتاپ رو با استفاده از چارچوب ها و جعبه ابزارهای Phthon GUL مانند PyGTK , kivy , PyGul , PyJs , PyQT و Wxpython تسریع کنید.
#مقدمه
#پایتون_مقدماتی
#چرا_پایتون
#نرم_افزار
#Fxl
🔹1)کدهای قابل خواندن و قابل نگهداری :
اولین دلیل از دلایل انتخاب پایتون ، برای برنامه نویسی ، قابلیت نگهداری و خوانایی کدهاست .
هنگام نوشتن یک برنامه نرم افزاری ، باید روی کیفیت کد منبع آن تمرکز کنید تا نگهداری و به روز رسانی را ساده کنید ، قوانین نحوی پایتون به شما امکان اینو میده که مفاهیم رو بدون نوشتن کد اضافی بیان کنید .
در عین حال ، پایتون برخلاف سایر زبان های برنامه نویسی ، بر خوانایی کد تاکید می کنه ، و به شما این اجازه رو میده که از کلمات انگلیسی به جای علائم نگارشی استفاده کنید ، از این رو ، می تونید از پایتون برای ساخت برنامه های سفارشی بدون نوشتن کد اضافی استفاده کنید .
پایه کد خوانا و تمیز به شما کمک می کنه تا نرم افزار رو بدون صرف زمان و تلاش اضافی ، نگهداری و به روز رسانی کنید.
🔹2) پارادایم های برنامه نویسی چند گانه:
مانند سایر زبان های برنامه مدرن ، پایتون نیز از چندین پارادایم برنامه نویسی پشتیبانی می کنه .
پایتون به طور کامل از برنامه نویسی شی گرا و ساخت یافته پشتیبانی می کنه ، علاوه بر این ، ویژگی های زبان آن از مفاهیم مختلفی در برنامه نویسی کاربردی و جنبه گرا پشتیبانی می کنه.
در عین حال ، پایتون همچنین دارای یک سیستم نوع پویا و مدیریت خودکار حافظه است .
پارادایم های برنامه نویسی و ویژگی های زبان به شما کمک می کنه تا از پایتون برای توسعه برنامه های کاربردی نرم افزاری بزرگ و پیچیده استفاده کنید.
🔹3) سازگار با پلتفرم و سیستم های اصلی و بزرگ :
در حال حاضر پایتون از بسیاری از سیستم عامل ها پشتیبانی می کنه ، حتی می تونید از مفسرهای پایتون برای اجرای کد روی پلتفرم ها و ابزارهای خاص استفاده کنید.
همچنین ، پایتون یک زبان برنامه نویسی مفسری است !
این ویژگی ، به این امکان رو میده که یک کد رو بدون کامپایل مجدد بر روی چندین پلتفرم اجرا کنید و فورا تاثیر تغییرات ایجاد شده در کد رو بررسی کنید ، این ویژگی به شما کمک می کنه تا بدون اینکه زمان توسعه ی کد بیشتر میشه ، تغییراتی در کد اینجاد کنید.
یک برنامه نویس ارزش این ویژگی رو خیلی خوووب متوجه میشه:))
🔹4) کتابخونه استاندارد قوی :
کتابخونه استاندارد بزرگ و قوی اون باعث میشه پایتون نسبت به سایر زبان های برنامه نویسی برتری ویژه ای داشته باشه ، کتابخونه ی استاندارد به شما این امکان رو میده که امکانات و خواسته های مورد نظرتون رو از بین طیف گسترده ای از ماژول ها مطابق با نیازهای دقیق خودتون انتخاب کنید ، هر ماژول به شما امکان میده تا بدون نوشتن کد اضافی ، عملکردی رو به برنامه پایتون اضافه کنید .
🔹5) بسیاری از چارچوپ ها و ابزارهای منبع باز :
متن باز بودن بسیاری از منابع ، از دیگر دلایل انتخاب پایتون هست ، به عنوان یک برنامه نویسی متن باز ، پایتون به شما کمک می کنه تا هزینه توسعه نرم افزار رو به میزان قابل توجهی کاهش بدین.
حتی می تونید از چندین چارچوپ ، کتابخانه و ابزارهای توسعه منابع باز پایتون برای کاهش زمان توسعه بدون افزایش هزینه ازش استفاده کنید.
حتی شما می تونین پایتون و ابزارهای توسعه مورد نظرتون رو با توجه به نیازهای دقیق خود ، از میان طیف گسترده ای از چارچوپ های منبع باز انتخاب کنید ، به عنوان مثال ، می تونین با استفاده از چارچوپ های وب قوی پایتون مانند جنگو ، فلاسک ، پیرامید ، بطری و Cherrypy ، توسعه برنامه های تحت وب رو ساده و سرعت ببخشین.
به همین ترتیب ، می تونین توسعه برنامه رابط کاربری گرافیکی دسکتاپ رو با استفاده از چارچوب ها و جعبه ابزارهای Phthon GUL مانند PyGTK , kivy , PyGul , PyJs , PyQT و Wxpython تسریع کنید.
#مقدمه
#پایتون_مقدماتی
#چرا_پایتون
#نرم_افزار
#Fxl
🔹6) با پایتون، توسعه نرم افزارهای پیچیده رو ساده کنید :
پایتون یک زبان برنامهنویسی عمومیه. از این رو، میتونید از آن برای توسعه برنامههای دسکتاپ و وب استفاده کنید. همچنین میتونید از پایتون برای توسعه برنامههای پیچیده علمی و عددی استفاده کنید. پایتون با ویژگیهایی طراحی شده که تجزیه و تحلیل و تجسم دادهها را تسهیل میکنند. شما میتونید از ویژگیهای تجزیه و تحلیل دادههای پایتون برای ایجاد راه حلهای کلان داده سفارشی بدون صرف زمان و تلاش اضافی استفاده کنید. در عین حال، کتابخانههای تجسم دادهها و APIهای ارائه شده توسط پایتون به شما کمک میکنند تا دادهها را به شیوهای جذابتر و موثرتر تجسم و ارائه کنید. بسیاری از توسعه دهندگان پایتون حتی از پایتون برای انجام وظایف پردازش هوش مصنوعی و زبان طبیعی استفاده میکنند.
🔹7) توسعه آزمایش محور رو بپذیرید :
میتونید از پایتون برای ایجاد سریع پروتوتایپها، استفاده کنید. همچنین، میتونید برنامه مورد نظرتون رو مستقیماً از نمونه اولیه و به سادگی با بازآفرینی کد، بسازید. پایتون حتی با اتخاذ رویکرد توسعه مبتنی بر آزمایش، اجرای همزمان کدنویسی و آزمایش ر برای شما آسون تر میکنه. به راحتی میتونید قبل از نوشتن کد تستهای مورد نیاز رو بنویسید و از تستها برای ارزیابی مداوم کد برنامه استفاده کنید. از این آزمایشها میتوان برای بررسی اینکه آیا برنامه بر اساس کد منبع آن نیازهای از پیش تعریف شده رو برآورده میکنه ، استفاده کرد.
✅نتیجهگیری :
با وجود تمام دلایل منطقی کار با پایتون، پایتون مانند سایر زبانهای برنامهنویسی دارای کاستیهای خاص خودش هم هست. برخی از ویژگیهای داخلی ارائه شده توسط سایر زبانهای برنامهنویسی مدرن رو نداره. از این رو، اگر بخواهید یک نرم افزار سفارشی بسازید ممکنه لازم باشه برای تسریع توسعه ی اون، باید از کتابخانهها، ماژولها و چارچوبهای پایتون استفاده کنید.
همچنین، چندین مطالعه نشون داده که پایتون نسبت به چندین زبان برنامهنویسی پرکاربرد از جمله جاوا و C++ کندتر هست. شما باید با ایجاد تغییراتی در کد برنامه یا استفاده از زمان اجرا سفارشی، سرعت برنامه رو افزایش بدین اما این نکته رو همیشه در ذهن داشته باشین که میتونید از پایتون برای سرعت بخشیدن به توسعه نرم افزار و ساده سازی نگهداری نرم افزار استفاده کنید.
#مقدمه
#پایتون_مقدماتی
#چرا_پایتون
#نرم_افزار
#Fxl
پایتون یک زبان برنامهنویسی عمومیه. از این رو، میتونید از آن برای توسعه برنامههای دسکتاپ و وب استفاده کنید. همچنین میتونید از پایتون برای توسعه برنامههای پیچیده علمی و عددی استفاده کنید. پایتون با ویژگیهایی طراحی شده که تجزیه و تحلیل و تجسم دادهها را تسهیل میکنند. شما میتونید از ویژگیهای تجزیه و تحلیل دادههای پایتون برای ایجاد راه حلهای کلان داده سفارشی بدون صرف زمان و تلاش اضافی استفاده کنید. در عین حال، کتابخانههای تجسم دادهها و APIهای ارائه شده توسط پایتون به شما کمک میکنند تا دادهها را به شیوهای جذابتر و موثرتر تجسم و ارائه کنید. بسیاری از توسعه دهندگان پایتون حتی از پایتون برای انجام وظایف پردازش هوش مصنوعی و زبان طبیعی استفاده میکنند.
🔹7) توسعه آزمایش محور رو بپذیرید :
میتونید از پایتون برای ایجاد سریع پروتوتایپها، استفاده کنید. همچنین، میتونید برنامه مورد نظرتون رو مستقیماً از نمونه اولیه و به سادگی با بازآفرینی کد، بسازید. پایتون حتی با اتخاذ رویکرد توسعه مبتنی بر آزمایش، اجرای همزمان کدنویسی و آزمایش ر برای شما آسون تر میکنه. به راحتی میتونید قبل از نوشتن کد تستهای مورد نیاز رو بنویسید و از تستها برای ارزیابی مداوم کد برنامه استفاده کنید. از این آزمایشها میتوان برای بررسی اینکه آیا برنامه بر اساس کد منبع آن نیازهای از پیش تعریف شده رو برآورده میکنه ، استفاده کرد.
✅نتیجهگیری :
با وجود تمام دلایل منطقی کار با پایتون، پایتون مانند سایر زبانهای برنامهنویسی دارای کاستیهای خاص خودش هم هست. برخی از ویژگیهای داخلی ارائه شده توسط سایر زبانهای برنامهنویسی مدرن رو نداره. از این رو، اگر بخواهید یک نرم افزار سفارشی بسازید ممکنه لازم باشه برای تسریع توسعه ی اون، باید از کتابخانهها، ماژولها و چارچوبهای پایتون استفاده کنید.
همچنین، چندین مطالعه نشون داده که پایتون نسبت به چندین زبان برنامهنویسی پرکاربرد از جمله جاوا و C++ کندتر هست. شما باید با ایجاد تغییراتی در کد برنامه یا استفاده از زمان اجرا سفارشی، سرعت برنامه رو افزایش بدین اما این نکته رو همیشه در ذهن داشته باشین که میتونید از پایتون برای سرعت بخشیدن به توسعه نرم افزار و ساده سازی نگهداری نرم افزار استفاده کنید.
#مقدمه
#پایتون_مقدماتی
#چرا_پایتون
#نرم_افزار
#Fxl
خب دوستان..
تا اینجا قضیه ی آقا یا خانوم پایتون رو براتون گفتم .
که چی هستش و از کجا اومده و چرا اومده و آمدنش بهر چه بود این حرفا !
ی قدم پس تا اینجا برداشتیم .
(بزن دست قشنگه رو!)
برای قدم بعدی که می خواییم باهم برداریم اینه که اصلا چجوری باید نصبش کنیم.
بالاخره باید رو سیستم عاملمون باشه که شروع کنیم دیگه ، مگه نه؟
#Fxl
#binamak!
تا اینجا قضیه ی آقا یا خانوم پایتون رو براتون گفتم .
که چی هستش و از کجا اومده و چرا اومده و آمدنش بهر چه بود این حرفا !
ی قدم پس تا اینجا برداشتیم .
(بزن دست قشنگه رو!)
برای قدم بعدی که می خواییم باهم برداریم اینه که اصلا چجوری باید نصبش کنیم.
بالاخره باید رو سیستم عاملمون باشه که شروع کنیم دیگه ، مگه نه؟
#Fxl
#binamak!
یکم بخوام براتون باکلاس صحبت کنم اینجوری میشه که :
برای استفاده از پایتون ابتدا باید کامپایلر و محیط برنامه نویسی مربوط به اون رو نصب کنید.
حالا کامپایلر میدونی چیه؟
اگه نمیدونی از حضرت گوگل استفاده کن دوستم ! :)
حالا حواستونو بدین به من..
1.برای این کار اول باید بری تو سایت python.org.
2.سیستم عاملتو مشخص میکنی.
3.بعد دقت میکنی به ورژن .
4. یه ورژن 2 داریم ی ورژن 3 که باید بر اساس نیاز خودت ورژن مورد نظر رو دانلود کنی(ولی بهت توصیه میکنم به منظور استفاده حداکثری از قابلیت های پایتون ورژن 3 استفاده کنید که در حال حاضر آخرین ویرایش آن python3.11.4 هست)
#نصب_پایتون
#ورژن_3
#Fxl
برای استفاده از پایتون ابتدا باید کامپایلر و محیط برنامه نویسی مربوط به اون رو نصب کنید.
حالا کامپایلر میدونی چیه؟
اگه نمیدونی از حضرت گوگل استفاده کن دوستم ! :)
حالا حواستونو بدین به من..
1.برای این کار اول باید بری تو سایت python.org.
2.سیستم عاملتو مشخص میکنی.
3.بعد دقت میکنی به ورژن .
4. یه ورژن 2 داریم ی ورژن 3 که باید بر اساس نیاز خودت ورژن مورد نظر رو دانلود کنی(ولی بهت توصیه میکنم به منظور استفاده حداکثری از قابلیت های پایتون ورژن 3 استفاده کنید که در حال حاضر آخرین ویرایش آن python3.11.4 هست)
#نصب_پایتون
#ورژن_3
#Fxl
خب تا اینجا پایتون رو نصب کردیم .
قدم دوم : دانلود یک محیط برنامهنویسی استاندارد برای برنامهنویسی با پایتون یا IDE هست.
نرم افزارهای متفاوتی برای این کار وجود داره که از محبوبترین اونها میشه به Pycharm از محصولات شرکت Jetbrain و vscode است که در این دوره به علت راحت تر بودن در نصب از vscode استفاده میشه.
#vs_code
#Python
#Fxl
قدم دوم : دانلود یک محیط برنامهنویسی استاندارد برای برنامهنویسی با پایتون یا IDE هست.
نرم افزارهای متفاوتی برای این کار وجود داره که از محبوبترین اونها میشه به Pycharm از محصولات شرکت Jetbrain و vscode است که در این دوره به علت راحت تر بودن در نصب از vscode استفاده میشه.
#vs_code
#Python
#Fxl