Get Mystery Box with random crypto!

بنیاد پایتون کاران فارسی

لوگوی کانال تلگرام psfarsi — بنیاد پایتون کاران فارسی ب
لوگوی کانال تلگرام psfarsi — بنیاد پایتون کاران فارسی
آدرس کانال: @psfarsi
دسته بندی ها: فن آوری ها
زبان: فارسی
مشترکین: 2.51K
توضیحات از کانال

مقالات و اخبار مرتبط با پایتون فارسی
✅ گروه رسمی بنیاد نرم افزار پایتون فارسی: @PyFarsi
✅ Pyfarsi Offtopic Group : @Pyfarsi_Offtopic

Ratings & Reviews

3.00

3 reviews

Reviews can be left only by registered users. All reviews are moderated by admins.

5 stars

1

4 stars

0

3 stars

0

2 stars

2

1 stars

0


آخرین پیام ها

2022-08-31 13:08:29
چگونه یک شارژر برای خود بسازیم؟

#fun

آدرس گپ :
t.me/PyFarsi

آدرس کانال :
@PSFarsi
261 viewsHidden, edited  10:08
باز کردن / نظر دهید
2022-08-28 15:42:31 خب دوستان بریم سراغ جواب و توضیح اینکه چرا این جواب درسته
جواب درست: جواب درست این سوال میشه 1
دلیل :
خب ریشه ی این سوال بر میگرده به بحث Scope و Namespace در پایتون

تعریف Namespace : فضای نام یا Namespace یک مجموعه از نام های نمادین به همراه یکسری اطلاعات در مورد اشیاء مربوط به اون نام ها هس که در یک دیکشنری ذخیره میشن
تعریف Scope : یک محدوده ی خاصی که در آن متغیرها قابل مشاهده هستند، به عنوان scope شناخته میشن

ما در پایتون چهار نوع Namespace داریم :

1- Built-In
2- Global
3- Enclosing (non-local)
4- Local

فضای نام Built-In : این فضای نام اشاره داره به فضای نام داخلی خود پایتون
فضای نام Global : این فضای نام اشاره داره به فضای نام سراسری یک ماژول
فضای نام Enclosing و local به محدوده ی توابع تو در تو مربوط میشن به این صورت که اگه ما دو تابع تو در تو داشته باشیم محدوده یا scope تابع داخلی میشه Local و محدوده ی خارجی تابع داخلی، میشه Enclosing

خب حالا چرا جواب شد 1 ؟
خب ما وقتی تو بدنه ی تابع ()inner_function سعی کردیم متغیر value رو چاپ کنیم تابع ما اول میاد تو scope عه local خودش دنبال این متغیر میگرده اگه پیداش کرد پس چاپش میکنه اما اگه نبود چی؟
خب میره سراغ scope عه namespace قبل از local یعنی enclosing!
به همین ترتیب پیش میره تا برسه به global
وقتی میبینه تو global هس و پیداش کرد، دیگه همونجا متوقف میشه و نمیره سراغ built-in
نکته‌ای که وجود داره این هس که اگه تو هیچ کدوم از scope عه این namespace ها نبود اون وقت میاد خطای NameError رو به ما بر میگردونه

اطلاعات بیشتر : https://realpython.com/python-namespaces-scope/
409 views• Dom, 12:42
باز کردن / نظر دهید
2022-08-27 22:21:21
خروجی کد بالا چیست؟
Anonymous Quiz
62%
1
38%
NameError
246 voters514 views• Dom, 19:21
باز کردن / نظر دهید
2022-08-27 22:20:50
#سوال
508 views• Dom, 19:20
باز کردن / نظر دهید
2022-08-27 11:06:32 سوال: best practice‌ها و ابزارات مورد نیاز برای توسعه یه بسته، لایبرری یا نرم‌افزار پایتونی چیه؟

ابزارهای زیادی واسه این‌کارا وجود داره که بر اساس تجربه و چیزی که از 80 درصد پروژه های معروف و بزرگ دیدم، سعی میکنم بهتریناش رو معرفی کنم:


Dependency Management System

برای مدیریت وابستگی های یک پروژه بزرگ (یا نسبتا بزرگ)، پیشنهاد میکنم از Poetry استفاده کنید، چون ابزار بسیار قدرتمندی هست، کار باهاش بسیار راحته (خیلی شبیه به Cargo در زبان Rust هست)، کامیونیتی بزرگی داره، به راحتی محیط dev و prod رو میتونید مدیریت کنید، مستندات بسیار خوب و روانی داره، در سریع ترین زمان ممکن میتونید پروژه رو در PyPI منتشر کنید و همچنین پروژه⁧های معروفی از جمله Rich (کتابخونه⁧ای که خود pip هم ازش برای رنگی کردن progress barها استفاده میکنه) از اون استفاده میکنن، که همین نشون میده چقدر کاربردی هست.
همچنین build و run هم توسط Poetry انجام میشه

- منابع آموزشی:

1. آشنایی و شروع به کار با Poetry
https://realpython.com/dependency-management-python-poetry/

2. جزیات عمیق درباره هر قابلیت و نحوه استفاده
https://python-poetry.org/docs

3. نحوه انتشار یک package پایتونی در PyPI به کمک Poetry
https://johnfraney.ca/blog/create-publish-python-package-poetry/


Linting & Type Checking

برای Linting ابزارهای flake8 و pylint از معروف ترین⁧ها هستن، هر یک رو میتونید شدت سخت گیریشون رو تنظیم کنید، به راحتی همراه با Poetry تنظیماتشون در یک فایل قرار میگیره و نیاز به نگه داشتن فایل⁧های متفاوت برای هر کدوم ندارید. به نظرم خود flake8 به تنهایی نیازتون رو برطرف میکنه. اگر از PyCharm استفاده کنید یک Linter به صورت Built-in در اختیارتون میذاره که خوبه و کارتون رو راه میندازه.

اگر عادت دارید کدهای خودتون رو Annotate کنید و زیاد از Type Hint ها استفاده میکنید، استفاده از MyPy به عنوان یک static type checker به شما کمک میکنه ایرادات موجود در کلاس ها، توابع و ... رو پیدا کنید و بتونید typeهای دقیق تری استفاده کنید. همچنین ابزار Pyright که توسط مایکروسافت توسعه داده میشه، در VSCode به صورت integrated با افزونه Pylance کار میکنه و اگر از VSCode استفاده میکنید پیشنهاد میکنم حتما افزونه Pylance رو نصب کنید. PyCharm هم یک Type Checker داره ولی هنوز توانمندی Pylance و MyPy رو نداره.


- منابع آموزشی:

1. داکیومنت Flake8
https://flake8.pycqa.org/en/latest/user/invocation.html

2. داکیومنت MyPy
https://mypy.readthedocs.io/en/stable/getting_started.html


Code Formatting

برای مرتب و organize کردن importها از isort استفاده کنید، هم به صورت CLI در دسترس هست و هم یک API داره که میتونید در کد پایتون استفاده کنید. یک code formatter بسیار معروف که در اکثر پروژه⁧ها استفاده میشه Black هست، زیر نظر PSF (یا Python Software Foundation) و برنامه نویسای با تجربه و کار کشته ای همچون آقای Łukasz Langa (ریلیس منیجر پایتون 3.9) توسعه داده میشه، با دیگر ابزار ها مثل isort سازگار هست، با PEP8 سازگاره و کلی قابلیت مزیت دیگه داره که حقیقتا اینجا جا نمیشن :)

- منابع آموزشی:

1. داکیومنت isort
https://pycqa.github.io/isort/

2. داکیومنت Black
https://black.readthedocs.io/en/stable/getting_started.html

3. یک ویدیو از PyCon 2019 درباره Black




* این ابزارها همگی داکیومنت ساده و خوانایی دارن و به نظرم بهترین منبع همین داکیومنت⁧هاشون هست.


Testing

دو کتابخونه Pytest و unittest (در stdlib موجود هست) در تست نویسی پروژه ها استفاده میشن، برای تست کردن پروژه در environmentهای متفاوت از ابزار tox استفاده میشه و باهاش میتونید در نسخه های متفاوتی از پایتون کدتون رو تست کنید.


- منابع آموزشی:

1. یک مقاله جامع درباره تست نویسی، انواع آن و روش⁧های مورد استفاده در پایتون
https://realpython.com/python-testing/

2. ویدیو درباره unittest در پایتون
- آقای ned batchelder:



- آقای Corey Schafer:





* همچنین اگر از Git در پروژه خودتون استفاده میکنید، پیشنهاد میکنم از pre-commit حتما استفاده کنید و تمام این ابزارهای گفته شده رو automate کنید تا در هربار commit کردن، قبل از اینکه commit انجام بشه، این ابزارها روی کدتون اجرا بشن و اگر اشکالی در کدتون وجود داره پیدا بشه و اون رو برطرف کنید و دوباره commit کنید.

وبسایت pre commit:
https://pre-commit.com/

@Pygrammer

@PyFarsi
907 viewsM4hdi, edited  08:06
باز کردن / نظر دهید
2022-08-17 17:41:48
سلام دوستان

گروه مترجمین آزاد کتاب قصد داره کتاب Dive into Design patterns رو به صورت گروهی و آزاد ترجمه کند.

به همکاری شما نیازمندیم، در صورتی که مایل هستید، یک فصل، قسمت و... از کتاب رو ترجمه کنید، با ایجاد issue اعلام آمادگی کنید و بگید تا چه تاریخی ترجمه تون به اتمام می‌رسه.

لینک ریپازیتوری این کتاب:
https://github.com/ftg-iran/didp-persian
ممنون از همراهیتون

تاکنون هم کتاب های Django for professionals و Django for APIs به صورت آزاد ترجمه شده و میتونید مطالعه کنید
https://github.com/ftg-iran/

آدرس کانال: @free_translation
852 viewsM4hdi, 14:41
باز کردن / نظر دهید
2022-08-15 10:17:38
ترفند جالب هنگام استفاده از logging
با اضافه کردن handler های :

• StreamHandler
• FileHandler

میتونید log های خودتون رو هم داخل ترمینال نمایش بدید هم داخل یک فایل بنویسید
801 views• Dom, 07:17
باز کردن / نظر دهید
2022-08-12 10:17:01 کی و چرا از Jupyter Notebook استفاده کنیم؟

به نظر من یکی از شاهکارهای تولید شده همین Jupyter Notebook (که برپایه ی Ipython هست) هست. خیلی خلاصه سعی میکنم به ویژگی هایی که داره اشاره کنم:

۱- مناسبترین گزینه برای زمانی که میخواید report ای به کسی یا جایی بفرستید یا جزوه نویسی کنید:
چون میتونید بین کد های پایتونیتون توضیحات بنویسید. اونم نه فقط تکست معمولی بلکه mardown و LaTeX و html و css و حتی چند کلاس آماده ی bootsrtap. چی بهتر از اینکه یه سری کد های پایتونی قابل اجرا همراه با توضیحات زیبا و رنگی در یک داکیومنت.

۲- از مهمترین ویژگی هاش اینکه cell cell ران میکنه کد هارو ولی به چه درد میخوره؟ فرض کنید شما یه کدی دارید مینویسید که درخواست میدید به URL ای و وقتی جوابش اومد یه کاری روش میکنید. اگه توی ماژول پایتونی بنویسید و توی کد هاتون ارور داشته باشید چی میشه؟ درستش میکنید و باید دوباره ران کنید اونوقت باید دوباره درخواست بزنید به اونجا. "وقت گیره"! یه مثال خیلی پرکاربرد تر دیگه، شما نیاز دارید تا یه محاسبات زمانبری و انجام بدید تا یه آرایه نامپای مثلا تشکیل بشه و حالا ازش یه استفاده کنید... دوباره همین داستان اگه ارور داشته باشید باز باید صبر کنید... به جاش میاید اون بخش setup قضیه رو توی یه cell انجام میدید دیگه همیشه داریدش توی رم. جلوتر فقط کد خودتونو ران میکنید.

۳- خب مثل باقی ادیتور ها سینتکس highlighting داره،‌ با تب code completion داره. ارور هارو زیباتر نمایش میده.

۴- قابلیت نمایش plot های مختلف و dataframe های pandas رو به صورت جدولی داخل خودش داره.

۵- وقتی یه document ای نوشتید به کلی فرمت از جمله PDF, HTML, RST, و خود PY خروجی بگیرید مناسب برای ارائه یا به اشتراک گذاری. گزینه آخر یعنی حتی میتونید اونو به ماژول پایتونی خروجی بگیرید و همه چیزایی که نوشتید به عنوان توضیحات میشه comment داخل اون ماژول.

۶- میتونید از magic command های موجود تو ipython استفاده کنید که بعضیاش خیلی مفیدن. (همونا که با % یا %% شروع میشه) از اینجا چک کنید چیزای باحالی داره.

۷- میتونید توش دستورات شل رو هم وارد کنیدو خروجیشو کنار خروجی های پایتونی خودتون هم ببینید حتی اونارو تو کدتون استفاده کنید!!
files = !ls
الان files عه شما یه لیستی از تمام فایل های داخل دایرکتوریتون هست.

۸- میتونید امکاناتش رو با نصب nbextension ها گسترش هم بدید. مثلا code formatter و یا box عه suggestion و یا linter و ... این لینک یا این لینک رو برای نمونه ببینید.

________________________________________
اگه ویژگی خوب دیگه ای رو نگفتم بگید همچنین ضعف هاش رو هم بگید مثلا جاهایی که مناسب نیست استفاده شه. اولین جایی که مناسب نیست اینکه پروژه توش بزنید...چون برای اینکار نیست اصلا. مثلا برای اینکه از یه ipynb توی یه ipynb دیگه چیزی import کنید نمیتونید مستقیم بزنید
from A import B
باید کار اضافه تری انجام بدید.

ولی درکل تو جایی که میشه ازش استفاده کرد فوق العادس
920 viewsSorousH, 07:17
باز کردن / نظر دهید
2022-08-11 20:52:12 دوره آموزش FastAPI به زبان فارسی

قسمت سی ام






#fastapi #آموزش

@PyFarsi
813 views• Dom, 17:52
باز کردن / نظر دهید
2022-08-10 15:30:12 سوال‌ها:

چرا CPython رو با assembly نمینویسن؟

چرا CPython رو مثل PyPy نمیکنن؟ یا چرا از PyPy بجای CPython استفاده نمیکنیم؟

پاسخ سوال اول:
سوال اول: کد سی سریع‌تره یا کد اسمبلی؟

همه به من بگید ببینم، کامپایلرهای زبان سی از سورس‌کد C، چی تولید میکنن؟ خب حالت خییییلی پایه‌ اینه‌که از سورس C، کد اسمبلی تولید میکنن بعد با یه اسمبلر کد ماشین‌شون رو تحویل میدن.

اما حالت، هیچ‌وقت حالت پایه نیست
کاری که یه کامپایلر سی انجام میده اینه که یه خروجی خیلی efficient و کد اسمبلی خیلی سریع‌ از اون سورس‌کد بیرون میکشه

این اصل ماجراست.
اینه که جواب سوال میشه کد سی در اکثر مواقع از کد اسمبلی hand written که دقیقا همون کار رو انجام میده سریع‌تره. این همه مغز و وقت صرف نوشتن کامپایلر کردن تا این بشه
تا این شده

این از این

سوال دوم: نوشتن کد سی آسون‌تره یا کد اسمبلی؟

سوال سوم: برای نوشتن یه برنامه خیلی ساده، کی سریع‌تر مینویسه یه C کار یا یه Assembly کار؟

سوال چهارم که جوابش هم میدونیم، کد کی سریع‌تره؟

تماما C برنده‌‌ی ماجراست
پس فکر اینکه CPython رو با اسمبلی بنویسن سریع‌تر میشه رو بندازید بیرون.

به چند دلیل: سری دلایل اول -> همین دلایل بالا
سری دلایل دوم: بابا پایتون توی یه سری کارا کنده به هزار تا دلیل دیگه گیر ندید به سی یا اسمبلی

الان سورس PyPy که سرعت خیلی بیشتری از CPython توی خیلی جاها داره ببینید، پایتونه به ولله تقریبا بالای ۹۸ ۹۹ درصد پایتونه
پس مشکل جای دیگه‌ست.

پاسخ سوال دوم:

پیاده‌سازی CPython یک پیاده‌سازی general هست.
این خیلی معنی‌ها داره
مثال: ببینید یه چیزی وجود داره به اسم numba
(برای مطالعه در مورد نامبا این مقاله‌ام‌ رو بخونید)
این یه JIT Compiler هست برای کارای عددی و محاسباتی دارای حلقه‌های زیاد

یکی از کارای jit ها همینه، چنین کدهایی رو سریع کنن اما آیا همه چنین کدهایی دارن؟ خیر
آیا تحمل اورهد و سنگینی JIT رو دارن؟ قطعا خیر
میدونید چقدر رم مصرف میکنن؟
برای یه راه‌حل مشابه بین پایتون و NodeJS، اون نسخه‌ی NodeJS حدود ۴.۵ برابر بیشتر از پایتون رم مصرف کرده، صرفا بخاطر داشتن JIT.
جیت‌ها start up رو هم کندتر میکنن

از اون طرف پایتون بعضی جاها از pypy سریع‌تره
مثلا یکی‌ش وب
آقای Anthony shaw یه چند تا بنچ‌مارک گرفتن با FastAPI و Uviloop و این دم و دستگاه‌ها
توی همه‌شون pypy بسیار از CPython کند‌تر بوده و رم مصرفی خیلی بیشتری داشته

یه مشکل دیگه هم هست
پای‌پای به طور صد درصد با C extension moduleها اوکی نیست
فرض کن نتونی numpy استفاده کنی

پس هر چیزی رو بهرکاری ساختن


@pyfarsi
785 viewsM4hdi, edited  12:30
باز کردن / نظر دهید