Python tricks | Хитрости Питона
5.67K subscribers
2.21K photos
26 videos
1 file
2.52K links
Здесь вы найдете лучшие практики и приёмы, которые используют опытные программисты.

Сотрудничество: @SIeep_Token

Мы на платформе: https://telegram.me/python_tricks

Ссылка на канал: https://t.me/+QayZf6ccsQllZTYy
Download Telegram
collections.MutableMapping

collections.MutableMapping был представлен в Python 3.3 и представляет собой абстрактный базовый класс, который определяет интерфейс для изменяемых (mutable) отображений (маппингов) в Python. Этот класс служит основой для создания собственных классов, реализующих словари и другие типы отображений.

MutableMapping наследует от collections.abc.Mapping, который, в свою очередь, наследует от collections.abc.Collection. Эти абстрактные базовые классы предоставляют интерфейсы и методы для работы с коллекциями, маппингами и другими структурами данных.

Чтобы создать собственный класс, реализующий MutableMapping, вы должны определить несколько методов, включая getitem, setitem, delitem, iter, len, и, по желанию, contains (для поддержки оператора in). Эти методы обеспечивают доступ, изменение и удаление элементов из вашего отображения, а также обход и определение его размера.

🔗 Python tricks
Создаем простое веб-приложение с помощью Molten

Molten — это современный фреймворк для создания API на Python. Он предлагает ряд функций, которые делают разработку API более удобной и эффективной.

Molten может быть использован для создания любого веб-приложения или API, которое требует высокой степени модульности и тестируемости. Он особенно полезен для создания RESTful API.

В этом примере мы создаем простое веб-приложение с одним маршрутом ("/"), который возвращает приветственное сообщение в формате JSON. Мы затем запускаем это приложение на локальном сервере на порту 8000.
🔗 Python tricks
Mypy

Mypy — это статический анализатор типов для Python. Он позволяет добавить статическую типизацию в Python и выявлять ошибки, связанные с типами, на этапе компиляции.

Для использования Mypy нужно аннотировать переменные специальным синтаксисом, в примере мы указали, что функция sum_list принимает список целых чисел и возвращает целое число.

После запуска, если типы не совпадают, Mypy выдаст ошибку, как показано в примере.
🔗 Python tricks
string.isspace

С помощью метода isspace() ты можешь узнать, все ли символы в строке являются пробельными символами. Если являются, возвращается True. Если же строка пустая или присутствует хотя бы один не пробельный символ, возвращается False.

🔗 Python tricks
abs

Функция abs() возвращает абсолютное значение заданного числа. Под абсолютным значением подразумевается неотрицательное значение. В качестве числа может быть целое число, с плавающей запятой и комплексное число.

🔗 Python tricks
Метод isspace()

Метод isspace() — это строковый метод, который используется для проверки, состоит ли строка только из пробельных символов (пробелов, символов табуляции, символов новой строки и других символов, которые считаются «пробельными» в контексте языка Python).

Примечание: isspace() не изменяет исходную строку, а просто возвращает булево значение в зависимости от условия.

🔗 Python tricks
Как найти подстроку?

Для поиска подстроки в Python с использованием оператора in, вам нужно просто использовать оператор in в условном операторе (обычно внутри if). Вот подробное объяснение шаг за шагом:

1. Создайте переменную, в которой будете искать подстроку (назовем ее main_string).
2. Создайте переменную, содержащую подстроку, которую вы хотите найти (назовем ее sub_string).
3.Используйте оператор in для проверки наличия sub_string в main_string внутри условного оператора if. Если sub_string найдена в main_string, то условие if будет выполняться, иначе оно не будет выполняться.

Оператор in проверяет наличие подстроки внутри строки и не возвращает индекс, а просто булево значение True или False, которое показывает, найдена ли подстрока или нет.

🔗 Python tricks
Как использовать строки для вызова функций/методов

Существует несколько приёмов.
Лучший - использование словаря, ставящего соответствие строке функцию. Его главное достоинство - строки не обязаны совпадать с названиями функций. Использование встроенной функции getattr. И использование locals или eval (не рекомендуется).
🔗 Python tricks
Как удалить все символы новой строки в конце строки

Можно использовать S.rstrip("\r\n") для удаления символов новой строки, без удаления конечных пробелов.

🔗 Python tricks
Почему a_tuple[i] += ['item'] не работает, а добавление работает

Это из-за того, что расширенный оператор присваивания - оператор присваивания, а также из-за разницы между изменяемыми и неизменяемыми объектами в Python.
🔗 Python tricks
Примечание для словаря (dict) (ч.1)

Для того, чтобы объект мог быть ключом словаря, он должен быть хешируем. У кортежа, возможен случай, когда его элемент является не хешируемым объектом, и соответственно сам кортеж тогда тоже не является хешируемым и не может выступать ключом словаря.
🔗 Python tricks
Завершение программы

exit() — это функция, которая позволяет завершить выполнение программы и возвратить код возврата операционной системе.
Принимает один необязательный числовой аргумент — код возврата программы. По умолчанию это 0, что означает успешное завершение, а код возврата отличный от нуля сигнализирует об ошибке или нештатной ситуации.

Используется для завершения программы в случае критической ошибки, когда продолжение работы невозможно и позволяет гибко управлять кодами возврата в зависимости от ситуации.
🔗 Python tricks
Geopandas

Geopandas — это библиотека для работы с геопространственными данными. Она базируется на библиотеке Pandas и интегрируется с другими инструментами геоинформатики, такими как Shapely, Fiona, PyProj.

Geopandas позволяет эффективно работать с географическими данными в виде векторных и растровых слоев.

Основные области применения:
— Картография и визуализация пространственных данных.
— Анализ и обработка данных, содержащих географическую привязку.
— Работа с геометрическими объектами: точки, линии, полигоны.
— Преобразование и проектирование геоданных.
— Пространственный анализ и геостатистика.
— Моделирование географических процессов.
— ГИС-приложения и веб-картография.
🔗 Python tricks
Примечание для словаря (dict) (ч.2)

{} без значений создают словарь, а со значениями, в зависимости от синтаксиса могут создавать как множество, так и словарь.
🔗 Python tricks
Проверка принадлежности элемента данной коллекции c помощью оператора in

x in s
— вернет True, если элемент входит в коллекцию s и False — если не входит
Есть и вариант проверки не принадлежности: x not in s, где есть по сути, просто добавляется отрицание перед булевым значением предыдущего выражения.
🔗 Python tricks
functools.wraps

functools.wraps — это декоратор (decorator), предоставляемый в стандартной библиотеке Python в модуле functools. Он используется для оборачивания (wrapping) функций или методов, чтобы сохранить метаданные и атрибуты оригинальной функции, когда она передается другой функции в качестве аргумента или используется внутри другой функции.

wraps обычно используется в качестве декоратора внутри пользовательских декораторов. Без использования functools.wraps, имя функции и её документацию было бы изменено на имя обернутой функции (wrapper), и документацию из оригинальной функции можно было бы потерять.

🔗 Python tricks
Подгенераторы

Подгенератор (subgenerator) — это функция-генератор, которая используется внутри другой функции-генератора. Он предоставляет часть логики или последовательность значений, которые могут быть использованы внутри более общего генератора. Подгенераторы полезны для организации кода и управления сложной логикой генераторов, разделяя ее на более мелкие, независимые части.

🔗 Python tricks
Метод count()

Метод count() в Python используется для подсчета количества вхождений заданного элемента (значения) в списке, кортеже или строке. Вот синтаксис этого метода:

count(element)

где element — это значение, которое вы хотите подсчитать в последовательности (списке, кортеже или строке).

🔗 Python tricks
Обход всех элементов коллекции в цикле for in

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

🔗 Python tricks
Обработка элементов (ч.1)

Порядок обработки элементов для не индексированных коллекций будет не тот, как при их создании.

У прохода в цикле по словарю есть свои особенности.

При таком обходе словаря, перебираются только ключи равносильно for elm in my_dict.keys().

🔗 Python tricks
Обработка элементов (ч.2)

При желании можно пройти только по значениям. Но чаще всего нужны пары ключ(key) — значение (value).

Проход по .items() возвращает кортеж (ключ, значение), который присваивается кортежу переменных key, value.
🔗 Python tricks