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

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

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

Ссылка на канал: https://t.me/+QayZf6ccsQllZTYy
Download Telegram
Почему изменение списка 'y' изменяет также список 'x'

Вы, возможно, будете удивлены тому, что добавление в y изменяет также и x.
Два факта приводят к такому результату:
• Переменные - это просто ссылки на объекты. y = x не создаёт копию списка - это просто создаёт переменную y, которая ссылается на тот же объект, что и x.
• Списки изменяемы.
🔗 Python tricks
Как можно узнать имя объекта

Вообще говоря, никак, поскольку объекты в действительности не имеют имён. Важно: присваивание всегда связывает имя с объектом. Это верно и для инструкций def и class.

Возможно, класс имеет имя: однако, хотя он связан с двумя именами и запрашивается через имя B, созданный экземпляр всё ещё считается экземпляром класса A. Однако, невозможно сказать, имя экземпляра a или b, поскольку оба они связаны с одним и тем же значением.
🔗 Python tricks
Метод update()

Метод update() в Python используется для обновления содержимого словаря (dict) с данными из другого словаря или итерабельного объекта. Он позволяет добавлять новые ключи и значения в словарь или обновлять значения существующих ключей.

Синтаксис метода update() следующий:

словарь.update(другой_словарь)

где:

словарь — это словарь, в котором вы хотите обновить данные.
другой_словарь — это словарь или другой итерабельный объект (например, другой словарь, список кортежей или список списков), данные из которого вы хотите добавить или обновить в словарь.

🔗 Python tricks
Методы .removeprefix() и .removesuffix()

Методы .removeprefix() и .removesuffix() были введены в Python 3.9. Они предназначены для удаления указанного префикса или суффикса из строки. Эти методы предоставляют удобный способ обрезания строк, особенно если вы знаете, что определенная строка всегда начинается с определенного префикса или заканчивается определенным суффиксом. Это позволяет избежать необходимости использования сложных срезов строк и делает код более читаемым.

🔗 Python tricks
Какой приоритет у оператора "запятая"

Запятая не является оператором в Python. Поскольку запятая - не оператор, но разделитель между выражениями, если бы было введено:
("a" in "b"), "a"
А не
"a" in ("b", "a")
То же самое верно и для операторов присваивания (=, += и другие). Они не являются операторами как таковыми, а лишь синтаксическими разделителями в операциях присваивания.
🔗 Python tricks
Как можно изменить строку?

Никак, поскольку строки неизменяемы. В большинстве ситуаций, нужно просто сделать новую строку из различных частей. Однако, если так нужно, можно использовать io.StringIO, либо модуль array
🔗 Python tricks
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