Python | Программирование
9.87K subscribers
1.81K photos
2 videos
139 files
1.53K links
Python без границ для всех

Владелец, реклама @Ak_Mihail

Преобрести рекламное размещение: https://telega.in/c/Python_libr
加入频道
📌 Немного про регулярные выражения

Регулярные выражения пишутся только один раз и больше не трогаются. Их просто нереально разобрать и изменить.

Но ситуацию можно исправить, если добавить комментарии и правильно воспользоваться f-строками.

📕 Статья по этой теме

#урок
📌 Модуль copy

В python есть модуль, который называется copy. У него только две функции: copy() и deepcopy().

copy(x) — поверхностно копирует объект. Просто создаёт новый, сохраняя все ссылки внутри него.

deepcopy(x) — глубокое клонирование. Создаёт новый и рекурсивно копирует элементы внутри.

📕 Документация

#урок
Отсутствующие элементы в словаре

Если в словаре нет определённого ключа, то вызывается __missing__. Суть в том, что мы можем переопределить этот метод.

Примерно по такому принципу, как на фото выше, работает defaultdict из модуля collections.

#урок
📌 Методы строк, о которых нужно знать

ljust, rjust, center — используются для позиционирования текста. На самом деле, они просто создают строку, не меньше width и заполняют её пробелами (или другим, переданным символом).

strip — удаляет пробелы, табуляцию, перенос на новую строку и тому подобные символы из конца и начала строки. Если передать другие символы, то функция избавится от них. rstrip и lstrip делают то же самое, только в конце и в начале строки.

splitlines — возвращает список строк в тексте. Его лучше использовать вместо split('\n').

#урок
📌 isdecimal() vs isdigit() vs isnumeric()

Эти три метода str используются для определения, является ли строка числом, но у них есть небольшие отличия.

'123'.isdecimal() — проверяет, является ли строка только набором цифр (1-9). В то время как:

· '123⁴'.isdigit() вернёт True, даже если в строке есть маленькие цифры (² или \u00B2).

· '½'.isnumeric() вернёт True, даже если это дробь (½ или \u00BD).

#урок
📌 Атрибуты — штука странная

Они хранятся в переменной __dict__. Если вы добавите, обновите, удалите атрибут, изменится и эта переменная.

Подобных подход занимает много ОЗУ, если у вас много маленьких объектов. В таком случае используют __slots__.

В этой переменной хранится список атрибутов, которые будут у класса. __dict__ пропадёт, а значит нельзя будет добавлять/удалять атрибуты.

#урок
page2.png
218.1 KB
Шпаргалка по Python

Шпаргалка по основным понятиям языка: типам переменных (int, float, bool, str, None), структурам данных (list, tuple, set, dict), функциям и ООП.

Поможет новичкам лучше усвоить знания и быстрей изучить язык.

#урок
📌 Куча if'ов в элегантный код

В Python 3.10 появился Pattern matching. По своей сути — синтаксический сахар. В результате это всё равно превратится в if'ы, но человеку будет легче читать код.

С помощью match/case мы можем определять поведение объект на основе данных. Это похоже на switch/case в си-подобных языках, только возможностей в разы больше.

📕 Документация

#урок
📌 Только ключевые и только позиционные аргументы

Позиционные аргументы — те, что передаются по позиции (доступно с Python 3.8). Ключевые — те, что передаются за счёт key=value.

Все аргументы до косой черты (/) считаются позиционными, то есть передать в них данные можно только в определённом порядке.

Все аргументы после звёздочки (*) считаются ключевыми, то есть передать данные можно только с помощью key=value.

📕 PEP 570 (позиционные) и PEP 3102 (ключевые)

#урок
Самое время побыть Open Source разработчиком

Если вы уверены, что готовы к серьёзным проектам, то можете попробовать себя в Open Source разработке на Github.

К тому же, такое занятие сильно прокачает ваши навыки и сделает более привлекательным в глазах работодателя.

И это совсем не сложно. Есть простые issue, до которых просто не доходят руки у разработчиков. Их список вы можете найти тут.

#урок
Полезная шпаргалка для поиска быстрых решений в Python-проектах, охватывает: переменные «sys.argv», методы файлов, списка, даты и времени, переменные ОС Python, индексы, срезы и т.д.

Скачать в формате PDF в широком разрешении можно тут
📌 Принцип YAGNI

Вам это не нужно. Не добавляйте кнопку, если вас об этом не просили. Не убивайте всё время на супер быстрый движок, если вас об этом не просили.

Инициатива это хорошо, но из-за неё можно потерять время и деньги. Клиенту нужен работающий продукт, а не куча разных фич.

Если вы нарушите принцип то, в лучшем случае, потеряете своё время, в худшем — время команды и деньги клиента.

#урок
Работаем с TOML

В версии Python 3.11 появилась новая библиотека — tomllib. Она позволяет работать с форматом TOML.

TOML несколько отличается от других форматов, ведь имеет нативную поддержку массивов, словарей, времени.

📕 Документация

#урок
📌 Всегда случайный ID

Есть такая штучка, как UUID (Universally unique identifier) — универсальный уникальный идентификатор.

Суть в том, что значение идентификаторы всегда уникальные. Если создадите 1 млрд таких, то вероятность встретить двое одинаковых — 0.0000000001%.

Такое можно использовать в базах данных (для задания ключей), что давать имена файлам или в качестве уникальных имён любых веб-источников.

📕 Документация

#урок
📌 Вы знали, что поведение операторов можно менять?

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

Мы вполне можем переопределить поведение, изменив код внутри функции. Найти весь список функций и операторов можно в модуле operators.

📕 Документация

#урок
📌 Не бойтесь писать понятный код

Раньше было страшным злодеянием взять и оставить 1000 * 60 * 60, сейчас же все компьютеры умные и могут просчитать выражение ещё до запуска приложения.

Например, если у вас есть 355 дней в секундах, можно оставить 60 * 60 * 24 * 355, так человек быстрее поймёт, откуда взялось это число и что оно значит.

В производительности ничего не потеряете, а код сделаете понятнее... Для себя через три месяца

#урок
📌 Шпаргалка по NumPy

#урок
📌 Замыкание

Это когда вложенная функция обращается к переменной из внешней функции. Даже если внешняя функция уже выполнилась.

Подобная штука часто используется в функциональном программировании. На её основе создано куча алгоритмов.

Но это довольно требовательная операция, поэтому, если есть другой вариант решения задачи, используйте его.

#урок
📌 Парсим HTML

Библиотек много, но лучшая из них — lxml. Основное её преимущество — она быстрая.

Установка: pip install lxml

Если вы собираете работать с повреждёнными HTML/XML файлами, то выбирайте html5lib, эта библиотека медленная, но стабильная. Если же вам нужно быстренько взять какие-то данные с сайта, не раздумывая, выбирайте lxml.

🐙 GitHub

#урок