سلام دوستان🙌
گروه مترجمین آزاد کتاب قصد داره کتاب 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
گروه مترجمین آزاد کتاب قصد داره کتاب 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
✔️ سوال: best practiceها و ابزارات مورد نیاز برای توسعه یه بسته، لایبرری یا نرمافزار پایتونی چیه؟
ابزارهای زیادی واسه اینکارا وجود داره که بر اساس تجربه و چیزی که از 80 درصد پروژه های معروف و بزرگ دیدم، سعی میکنم بهتریناش رو معرفی کنم:
Dependency Management System
برای مدیریت وابستگی های یک پروژه بزرگ (یا نسبتا بزرگ)، پیشنهاد میکنم از
همچنین
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
برای
اگر عادت دارید کدهای خودتون رو
1. داکیومنت Flake8
https://flake8.pycqa.org/en/latest/user/invocation.html
2. داکیومنت MyPy
https://mypy.readthedocs.io/en/stable/getting_started.html
Code Formatting
برای مرتب و
1. داکیومنت isort
https://pycqa.github.io/isort/
2. داکیومنت Black
https://black.readthedocs.io/en/stable/getting_started.html
3. یک ویدیو از PyCon 2019 درباره Black
https://youtu.be/esZLCuWs_2Y
* این ابزارها همگی داکیومنت ساده و خوانایی دارن و به نظرم بهترین منبع همین داکیومنتهاشون هست.
Testing
دو کتابخونه
1. یک مقاله جامع درباره تست نویسی، انواع آن و روشهای مورد استفاده در پایتون
https://realpython.com/python-testing/
2. ویدیو درباره unittest در پایتون
https://m.youtube.com/watch?v=FxSsnHeWQBY
https://www.youtube.com/watch?v=6tNS--WetLI
* همچنین اگر از
وبسایت pre commit:
https://pre-commit.com/
✒️ @Pygrammer
〰️〰️〰️〰️〰️〰️〰️
©️@PyFarsi
ابزارهای زیادی واسه اینکارا وجود داره که بر اساس تجربه و چیزی که از 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
https://youtu.be/esZLCuWs_2Y
* این ابزارها همگی داکیومنت ساده و خوانایی دارن و به نظرم بهترین منبع همین داکیومنتهاشون هست.
Testing
دو کتابخونه
Pytest
و unittest
(در stdlib
موجود هست) در تست نویسی پروژه ها استفاده میشن، برای تست کردن پروژه در environment
های متفاوت از ابزار tox
استفاده میشه و باهاش میتونید در نسخه های متفاوتی از پایتون کدتون رو تست کنید.-
منابع آموزشی:1. یک مقاله جامع درباره تست نویسی، انواع آن و روشهای مورد استفاده در پایتون
https://realpython.com/python-testing/
2. ویدیو درباره unittest در پایتون
-
آقای ned batchelder:https://m.youtube.com/watch?v=FxSsnHeWQBY
-
آقای Corey Schafer:https://www.youtube.com/watch?v=6tNS--WetLI
* همچنین اگر از
Git
در پروژه خودتون استفاده میکنید، پیشنهاد میکنم از pre-commit
حتما استفاده کنید و تمام این ابزارهای گفته شده رو automate
کنید تا در هربار commit
کردن، قبل از اینکه commit
انجام بشه، این ابزارها روی کدتون اجرا بشن و اگر اشکالی در کدتون وجود داره پیدا بشه و اون رو برطرف کنید و دوباره commit کنید.وبسایت pre commit:
https://pre-commit.com/
✒️ @Pygrammer
〰️〰️〰️〰️〰️〰️〰️
©️@PyFarsi
بنیاد پایتون کاران فارسی
خروجی کد بالا چیست؟
خب دوستان بریم سراغ جواب و توضیح اینکه چرا این جواب درسته
جواب درست: جواب درست این سوال میشه 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/
جواب درست: جواب درست این سوال میشه 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/
Realpython
Namespaces in Python – Real Python
In this tutorial, you'll learn about Python namespaces, the structures that store and organize the symbolic names during the execution of a Python program. You'll learn when namespaces are created, how they're implemented, and how they support variable scope.
نظرسنجی!
Python Software Foundation و
Packaging Working Group و
Python Packaging Authority
یک نظرسنجی رو ترتیب دادن و از جامعه پایتون خواستن که نظرشون رو راجع به package کردن نرمافزارهای پایتونی ارائه کنن
اگه میخواید این مسئله بهتر و سادهتر بشه این نظرسنجی رو پر کنید (با فیلترشکن باید برید)
https://www.surveymonkey.co.uk/r/NMG6NJM
〰〰〰〰〰〰〰〰
©@PSFarsi
Python Software Foundation و
Packaging Working Group و
Python Packaging Authority
یک نظرسنجی رو ترتیب دادن و از جامعه پایتون خواستن که نظرشون رو راجع به package کردن نرمافزارهای پایتونی ارائه کنن
اگه میخواید این مسئله بهتر و سادهتر بشه این نظرسنجی رو پر کنید (با فیلترشکن باید برید)
https://www.surveymonkey.co.uk/r/NMG6NJM
〰〰〰〰〰〰〰〰
©@PSFarsi
www.surveymonkey.co.uk
Free Online Survey Software by SurveyMonkey: Closed Survey
This survey is currently closed. Please contact the author of this survey for further assistance.
روز برنامه نویس رو به تمام برنامه نویس های کانال و گروه پایتون کاران فارسی تبریک عرض میکنم❤️
🔰 بنیاد پایتون کاران فارسی
🆔 https://www.tg-me.com/PsFarsi
🔰 بنیاد پایتون کاران فارسی
🆔 https://www.tg-me.com/PsFarsi
🐍
A Python package that generates LaTeX math description from Python functions.
https://github.com/google/latexify_py
A Python package that generates LaTeX math description from Python functions.
https://github.com/google/latexify_py
همه ی ما کم و بیش جادی رو میشناسیم
از درک برنامه نویسی تا رادیو گیک هاش
استادی که همیشه برای یاد گرفتن و یاد دادن شوق و اشتیاق خاصی داشت همیشه خندون بود و سعی میکرد بهترین خودشو نشون بده
کسی که طرفدار #آزادی بود...💔
به امید آزادی این استاد و دوست عزیز🫶❤️
برای #جادی❤️
🆔 https://www.tg-me.com/PSFarsi
از درک برنامه نویسی تا رادیو گیک هاش
استادی که همیشه برای یاد گرفتن و یاد دادن شوق و اشتیاق خاصی داشت همیشه خندون بود و سعی میکرد بهترین خودشو نشون بده
کسی که طرفدار #آزادی بود...💔
به امید آزادی این استاد و دوست عزیز🫶❤️
برای #جادی❤️
🆔 https://www.tg-me.com/PSFarsi
طبق گفته گویدو ون راسم، خالق پایتون، نسخهی 3.11 قراره به صورت لایو، دو روز دیگه یعنی دوشنبه، ساعت ۱۷ به وقت UTC (یعنی ساعت 20:30 به وقت تهران) ریلیس بشه 😍
https://twitter.com/gvanrossum/status/1583561788204806144?t=e5oNBr7PJc27y0PnSo9Xqw&s=19
این لینک یوتوبش 😁
https://youtu.be/PGZPSWZSkJI
https://twitter.com/gvanrossum/status/1583561788204806144?t=e5oNBr7PJc27y0PnSo9Xqw&s=19
این لینک یوتوبش 😁
https://youtu.be/PGZPSWZSkJI
This media is not supported in your browser
VIEW IN TELEGRAM
🔰 سه پروژه تمرینی تحت وب با پایتون در قالب یک پروژه
➕ پروژه اول بررسی صحت کد ملی، دومی بررسی شماره صحت شماره کارت و تشخیص نام بانک، سومی هم تشخیص درگاه های فیشینگ.
➕ به سلیقه خودتون میتونید اون رو شخصی سازی کنید و به پروژه های خودتون اضافه کنید.
➕ اگر خواستین تعداد بانک ها رو بیشتر کنید کافیه بخش update رو توی گیت هاب بخونید اونجا توضیح دادم.
🔗 لینک پروژه ...
💠 Language: Python ( Flask )
آدرس گپ :
🔰 www.tg-me.com/PyFarsi
آدرس کانال :
🔰@PSFarsi
➕ پروژه اول بررسی صحت کد ملی، دومی بررسی شماره صحت شماره کارت و تشخیص نام بانک، سومی هم تشخیص درگاه های فیشینگ.
➕ به سلیقه خودتون میتونید اون رو شخصی سازی کنید و به پروژه های خودتون اضافه کنید.
➕ اگر خواستین تعداد بانک ها رو بیشتر کنید کافیه بخش update رو توی گیت هاب بخونید اونجا توضیح دادم.
🔗 لینک پروژه ...
💠 Language: Python ( Flask )
آدرس گپ :
🔰 www.tg-me.com/PyFarsi
آدرس کانال :
🔰@PSFarsi
Do you want to watch how we release Python 3.11 live? 🐍🎉 Join us in the 3.11 release party organised with the good people of @PythonDiscord at 17:00 UTC+0! 📆 We will talk about some of the new cool features and a sneak peek into what's coming in 3.12 👀 https://youtu.be/PGZPSWZSkJI
🔗 Pablo Galindo Salgado (@pyblogsal)
تا ریلیس شدن پایتون ۳.۱۱ ساعاتی بیش نمانده است =))
🔗 Pablo Galindo Salgado (@pyblogsal)
تا ریلیس شدن پایتون ۳.۱۱ ساعاتی بیش نمانده است =))
YouTube
Python 3.11 Release
Timestamps
00:00 - Introduction
24:30 - Brandt Bucher, Specializing Adaptive Interpreter
50:40 - Mark Shannon, Other Speedups
1:07:42 - Irit Katriel, Exception Improvements and Features
1:42:13 - Pablo Galindo, Better Tracebacks
1:58:46 - Pablo Galindo, tomllib…
00:00 - Introduction
24:30 - Brandt Bucher, Specializing Adaptive Interpreter
50:40 - Mark Shannon, Other Speedups
1:07:42 - Irit Katriel, Exception Improvements and Features
1:42:13 - Pablo Galindo, Better Tracebacks
1:58:46 - Pablo Galindo, tomllib…
Pablo released #Python 3.11.0 final today, that can only mean one thing: time for me to release Python 3.12.0 alpha 1. My first release, and boy are my mistakes embarrassing....
https://www.python.org/downloads/release/python-3120a1/
🔗 T. Wouters (@Yhg1s)
ریلیس منیجر جدید پایتون :)
https://www.python.org/downloads/release/python-3120a1/
🔗 T. Wouters (@Yhg1s)
ریلیس منیجر جدید پایتون :)