#python python... PYTHON 🔛 🚀
11 subscribers
914 photos
7 videos
158 files
1.54K links
Download Telegram
Forwarded from Python Academy
Упрощение создания операторов сравнения

Для создания объектов с поддержкой операторов сравнения в классе обычно требуется реализовать большое количество магических методов, а именно – __lt__, __le__, __eq__, __ne__, __gt__, __ge__.

Про то, что делает каждый из них расскажем отдельным постом, но сейчас покажем, как можно сильно упростить реализацию подобного класса. Для этого можно использовать декоратор total_ordering из пакета functools.

В таком случае достаточно реализовать в классе только __lt__ и __eq__. Эти два метода являются минимумом, который нужен декоратору для конструирования остальных методов.

#классы
Forwarded from Python Academy
Первые шаги в Python

Специально для начинающих сделали универсальную подборку ресурсов для изучения Python с полного нуля.

Подборка включает в себя бесплатные онлайн-курсы, книги, YouTube каналы, сайты для практики и другое.

Читать 2 минуты

#статья
Forwarded from Python Academy
Перегрузка операторов сравнения

В случае, если вам в коде необходимо сравнивать объекты какого-либо класса, требуется реализовать магические методы, которые вызываются при сравнении.

Например, под капотом записи a < b вызывается a.__lt__(b). Для каждого оператора сравнения существует свой магический метод. Подробнее про то, какой метод за какой оператор отвечает, выше в коде.

Писать все шесть методов получается слегка громоздко, поэтому зачастую используют декоратор total_ordering из functools. Про него, кстати, недавно писали пост.

#классы
​​👉Использование кортежей в Python🐍

Кортеж - это упорядоченная и неизменяемая коллекция. В python кортежи записываются в круглые скобки.
Пример:
this_tuple = ("apple", "banana", "cherry")
print (this_tuple)
#>>> ('apple', 'banana', 'cherry')

Доступ к элементам кортежа
Вы получаете доступ к элементам кортежа, ссылаясь на номер индекса в квадратных скобках
Пример:
this_tuple = ("apple", "banana", "cherry")
print (this_tuple[1])
print (this_tuple[0])
print (this_tuple[2])

#>>>banana
#>>>apple
#>>>cherry

Отрицательная индексация

Отрицательная индексация означает начало с конца, -1 относится к последнему элементу, -2 относится ко второму последнему элементу и т. д.
Пример:
this_tuple = ("apple", "banana", "cherry")
print (this_tuple[-1])
print (this_tuple[-2])
print (this_tuple[-3])

#>>>cherry
#>>>banana
#>>>apple

Диапазон индексов

Вы можете указать диапазон индексов, указав, где начать и где закончить диапазон.
При указании диапазона возвращаемое значение будет новым кортежем с указанными элементами.
Пример:
this_tuple = ("apple", "banana", "cherry", "mango")
print (this_tuple[1:3])
print (this_tuple[0:2])
print (this_tuple[0:1])

#>>('banana', 'cherry')
#>>>('apple', banana')
#>>>('apple')

Изменить значения кортежа

Как только кортеж создан, он не может изменить свои значения. Кортежи неизменяемы или являются immutable как это еще называется.
Но есть обходной путь. Вы можете преобразовать указатель в список, изменить список и преобразовать список обратно в кортеж.
Пример:
x = ("apple", "banana", "cherry")
y = list(x)
y[1] = "kiwi"
x = tuple(y)
print (x)

#>>>('apple', 'kiwi', 'cherry')
​​🧐Почему Python хорош для веб-разработки?💡

Несмотря на то что в современном Вебе можно фактически без бэкенда — чисто на фронтенд-технологиях, на JavaScript — собрать себе single page application или progressive web application, все равно это слишком сложно, плохо индексируется и требует крутых разработчиков.Если мы хотим сделать сайт или сервис, мы используем комбинированный подход: у нас какой-то бэкенд осуществляет логику и создает веб-страницы и какой-то фронтенд рисует эти веб-страницы в браузере. И когда нам надо быстро это все на чем-то собрать, то выбора особо нет.

🤔Возможные варианты.

C#. Microsoft действительно молодцы, они сделали .NET Core и всячески ее продвигают. Но, во-первых, это новая кроссплатформенная технология, и там еще не все гладко. Во-вторых, это действительно дорого, разработчиков C# мало — просто потому, что она непопулярна.

Java. Это сложно. Сделать нормальный сайт на Java — это не 10 строчек кода, как на Python. Это много кода, это фреймворки, и нужно знать специфику настройки Java-серверов. В общем, сплошные боль и страдания.

PHP. В последних версиях он замечательный, но нельзя просто так взять и использовать PHP 7.2. Если обычный, не топовый разработчик делает сайт на PHP, он не будет писать только на 7.2: все равно придется читать какие-то учебники, туториалы, везде куча legacy-кода, и это не очень хорошо.

JavaScript и Node.js. Это замечательно и очень современно, когда один язык и на фронтенде, и на бэкенде. Только не очень стабильно. Node.js — хорошая штука, но проблематично развернуть ее в продакшене так, чтобы она не падала и работала устойчиво. Плюс, если мы хотим писать качественный код на JavaScript, нам нужен не JavaScript, а TypeScript. А вот TypeScript неожиданно сложный, при виде него у рядового разработчика вскипают мозги.

А вот преимущества python в веб разработке перед главным конкурентом PHP.

1. Продуманный дизайн
2. В простоте обучения Python выигрывает
3. Улучшенная структура
4. Python более читабельный стек
5. Синтаксис намного проще, чем PHP
6. Более простые и легкодоступные инструменты Инструменты отладки
7. Явный победитель в управлении пакетами
8. Лямбды, предоставляемые Python, дают преимущество перед PHР
9. Python более универсален, чем PHP
10. Огромная поддержка и сообщество

Что входит в базис для веб-разработки на Python
📄Веб-фреймворки Django, Flask, aiohttp, Tornado и т. д. (и знать о существовании остальных).

📄Протоколы и API: в первую очередь http, JSON-RPC, Protocol Buffers, gRPC.

📄ORM и миграции, реляционные базы данных, SQLAlchemy, SQL, PostgreSQL, MySQL.

📄Основы HTML, CSS, Bootstrap, а также JS-фреймворки и JQuery.

📄Принципы работы приложений на продакшене, тестирование, юнит-тесты, автотесты, системы контроля версий, git.
​​📄Топ проектов которые украсят и добавят ценности в ваше портфолио python-разработчика.🚀

1. Aгрегатор контента - Агрегатор контента - это физическое лицо или организация, которые собирают веб-контент (и / или иногда приложения) из различных онлайн-источников для повторного использования или перепродажи. Есть два типа агрегаторов контента: (1) те, которые просто собирают материалы из различных источников для своих веб-сайтов, и (2) те, которые собирают и распространяют контент в соответствии с потребностями своих клиентов.

2. Сокращатель URL - Сокращение URL-адресов - это метод во всемирной паутине, в котором унифицированный указатель ресурса (URL) может быть существенно короче и по-прежнему направлен на требуемую страницу. Это достигается с помощью перенаправления, которое ведет на веб-страницу с длинным URL-адресом.

3. Решатель Судоку - Стандартный судоку содержит 81 ячейку в сетке 9 × 9 и 9 прямоугольников, каждое из которых является пересечением первых, средних или последних 3 строк, а также первых, средних или последних 3 столбцов.
Существует несколько компьютерных алгоритмов, которые решают большинство головоломок 9 × 9 (n = 9) за доли секунды, но комбинаторный взрыв происходит при увеличении n, ограничивая свойства судоку, которые можно построить, проанализировать и решить как n увеличивается.

4. Приложение для уведомлений на рабочем столе - Уведомление на рабочем столе - это простое приложение, которое выдает уведомление в форме всплывающего сообщения на рабочем столе.

5. Файловый менеджер - компьютерная программа, предоставляющая интерфейс пользователя для работы с файловой системой и файлами. Файловый менеджер позволяет выполнять наиболее частые операции удаления над файлами - создание, открытие / воспроизведение / просмотр, редактирование, изменение, переименование, копирование, изменение атрибутов и свойств, файлов и назначение прав.

⚠️Именно проекты таких типов работодатели ценят в портфолио разработчиков, а наличие этих проектов в списке реализованных, даст вам весомые преимущества перед другими кандидатами.
​​🚀Для чего нужна библиотека Pytest?!.💡
- Pytest: помогает писать лучшие программы

Инфраструктура pytest упрощает написание небольших тестов, но при этом масштабируется для поддержки сложного функционального тестирования приложений и библиотек.


📊Функции.
    - Подробная информация о неудачных утверждениях assert (не нужно запоминать имена self.assert *)

   -  Автоматическое обнаружение тестовых модулей и функций

   - Модульные приспособления для управления небольшими или параметризованными долгоживущими тестовыми ресурсами

   -  Может запускать модульные тесты (включая пробные) и тесты носа из коробки

  -   Python 3.6+ и PyPy 3

  -  Богатая архитектура плагинов, более 315+ внешних плагинов и процветающее сообщество

📖Документация
Полную документацию, включая установку, руководства и PDF-документы, см. В разделе «Содержание».

Ошибки / запросы
Используйте трекер проблем GitHub, чтобы отправлять сообщения об ошибках или запрашивать функции.

🕔Журнал изменений
Обратитесь к странице журнала изменений для исправлений и улучшений каждой версии.

Поддержка pytest
Open Collective - это онлайн-платформа для финансирования открытых и прозрачных сообществ. Он предоставляет инструменты для сбора денег и полной прозрачности делиться своими финансами.

Это предпочтительная платформа для частных лиц и компаний, которые хотят делать разовые или ежемесячные пожертвования непосредственно в проект.

Подробности смотрите в коллективе pytest.
pytest для предприятия

Доступно как часть подписки Tidelift.

Сопровождающие pytest и тысячи других пакетов работают с Tidelift, чтобы обеспечить коммерческую поддержку и обслуживание зависимостей с открытым исходным кодом, которые вы используете для создания своих приложений. Экономьте время, снижайте риски и улучшайте работоспособность кода, оплачивая при этом те, кто поддерживает именно те зависимости, которые вы используете.

🔓Безопасность
pytest никогда не был связан с уязвимостью безопасности, но в любом случае, чтобы сообщить об уязвимости безопасности, используйте контактное лицо по безопасности Tidelift. Tidelift будет координировать исправление и раскрытие информации.
Лицензия

Авторское право Holger Krekel и др., 2004-2020.

Распространяемый по условиям лицензии MIT, pytest является бесплатным программным обеспечением с открытым исходным кодом.
Tips & Tricks. Как при помощи генераторов создать функцию, ведущую себя как итератор

Рассмотрели на примере, как делать итераторы быстрым, простым и понятным способом.

Читать статью

#функции
📋Топ 10 популярных вопросов на собеседовании python-разработчика.🚀

1.Для чего используются ключевые слова Global и Nolocal?

2.В чём разница методов Classmethod и StaticMethod?

3.Что такое GIL?

4.Как и для чего используются Метаклассы.

5.Что такое Аннотации типов? Что такое Общие Аннотации типов?

6.Что такое Generator-функции?

7.Что такое Декораторы?

8.Что значит 'Pickling'? А 'Unpickling'?

9. Что значат *args и **kwargs в функциях python?

10.Для чего предназначены файлы с расширением '.pyc'?

Ответы на эти вопросы по сможете найти по ссылке ниже.
https://telegra.ph/Top-10-populyarnyh-voprosov-na-sobesedovanii-python-razrabotchika-02-15
Разбираемся, как на Python с помощью готовых инструментов автоматизировать тестирование, cбор и обработку данных, деплой и другие задачи 🙌🏻

Меньше рутины = счастливее разработчик, правда ведь?

https://clck.ru/TXDQX
Forwarded from Zen of Python
Разбираемся с not в Python

Если обратиться к документации, то оператор not выдаст True, если аргумент False и наоборот. Звучит довольно просто и логично. Но если копнуть чуть глубже, то может возникнуть вопрос — что считать за True, а что за False?

Чтобы разобраться в этом, автор углубился в недра Python и C:

https://tprg.ru/gT4z
Forwarded from Python Quiz
Python Работа - канал с вакансиями по Python.
Все вакансии с возможность прямого контакта с работодателями внутри телеграмма.

Уровень вакансий: Junior, Middle, Senior.

Ищите свою первую Python работу у нас
: @pythonrabota