TG Telegram Group Link
Channel: بنیاد پایتون کاران فارسی
Back to Bottom
سلام دوستان🙌

گروه مترجمین آزاد کتاب قصد داره کتاب 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

برای مدیریت وابستگی های یک پروژه بزرگ (یا نسبتا بزرگ)، پیشنهاد میکنم از 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
خروجی کد بالا چیست؟
Anonymous Quiz
62%
1
38%
NameError
بنیاد پایتون کاران فارسی
خروجی کد بالا چیست؟
خب دوستان بریم سراغ جواب و توضیح اینکه چرا این جواب درسته
جواب درست: جواب درست این سوال میشه 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/
This media is not supported in your browser
VIEW IN TELEGRAM
چگونه یک شارژر برای خود بسازیم؟ 😎

#fun

آدرس گپ :
🔰 hottg.com/PyFarsi

آدرس کانال :
🔰 @PSFarsi
نظرسنجی!

Python Software Foundation و
Packaging Working Group و
Python Packaging Authority

یک نظرسنجی رو ترتیب دادن و از جامعه پایتون خواستن که نظرشون رو راجع به package کردن نرم‌افزارهای پایتونی ارائه کنن

اگه میخواید این مسئله بهتر و ساده‌تر بشه این نظرسنجی رو پر کنید (با فیلترشکن باید برید)

https://www.surveymonkey.co.uk/r/NMG6NJM


©@PSFarsi
روز برنامه نویس رو به تمام برنامه نویس های کانال و گروه پایتون کاران فارسی تبریک عرض میکنم❤️

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

🆔 https://hottg.com/PsFarsi
What is the output?
🐍

A Python package that generates LaTeX math description from Python functions.

https://github.com/google/latexify_py
🔰 Different Types of Inheritance

🆔 https://hottg.com/PSFarsi
همه ی ما کم و بیش جادی رو میشناسیم
از درک برنامه نویسی تا رادیو گیک هاش
استادی که همیشه برای یاد گرفتن و یاد دادن شوق و اشتیاق خاصی داشت همیشه خندون بود و سعی میکرد بهترین خودشو نشون بده
کسی که طرفدار #آزادی بود...💔

به امید آزادی این استاد و دوست عزیز🫶❤️

برای #جادی❤️
🆔 https://hottg.com/PSFarsi
طبق گفته گویدو ون راسم، خالق پایتون، نسخه‌ی 3.11 قراره به صورت لایو، دو روز دیگه یعنی دوشنبه، ساعت ۱۷ به وقت UTC (یعنی ساعت 20:30 به وقت تهران) ریلیس بشه 😍

https://twitter.com/gvanrossum/status/1583561788204806144?t=e5oNBr7PJc27y0PnSo9Xqw&s=19

این لینک یوتوبش 😁
https://youtu.be/PGZPSWZSkJI
Are you OK?
yes, just compiling Python from source
This media is not supported in your browser
VIEW IN TELEGRAM
🔰 سه پروژه تمرینی تحت وب با پایتون در قالب یک پروژه

پروژه اول بررسی صحت کد ملی، دومی بررسی شماره صحت شماره کارت و تشخیص نام بانک، سومی هم تشخیص درگاه های فیشینگ.

به سلیقه خودتون میتونید اون رو شخصی سازی کنید و به پروژه های خودتون اضافه کنید.

اگر خواستین تعداد بانک ها رو بیشتر کنید کافیه بخش update رو توی گیت هاب بخونید اونجا توضیح دادم.

🔗 لینک پروژه ...

💠 Language: Python ( Flask )

آدرس گپ :
🔰 hottg.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 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)

ریلیس منیجر جدید پایتون :)
HTML Embed Code:
2025/07/02 21:41:51
Back to Top