Just Python
11.2K subscribers
3.67K photos
11 videos
3.67K links
🐍Простое изучение Python.

Ссылка: @Portal_v_IT

Сотрудничество: @oleginc, @tatiana_inc

Канал на бирже: telega.in/c/justpython_it

РКН: clck.ru/3MnbSc
Download Telegram
Преобразование двух списков в словарь

Предположим, у нас имеется два списка. Один из них содержит имена студентов, а второй — их оценки. Как преобразовать эти два списка в словарь?

Для решения задачи можно прибегнуть к функции zip().

#theory // Just Python
Возврат из функции нескольких значений

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

Для возврата из функции нескольких значений их нужно разделить запятыми. На основе этого списка значений Python создаст кортеж и вернёт его туда, откуда была вызвана функция.

#theory // Just Python
Использование функции sorted()

В Python очень легко сортировать некие последовательности данных с использованием встроенной функции sorted(), которая берёт на себя решение всех сопутствующих задач.

Эта функция сортирует любые последовательности (списки, кортежи) и всегда возвращает список с отсортированными элементами. Рассмотрим пример сортировки списка чисел в порядке возрастания:
sorted([3,5,2,1,4]) # [1, 2, 3, 4, 5]


А вот — пример сортировки списка строк в порядке убывания:
sorted(['france', 'germany', 'canada', 'india', 'china'], reverse=True) # ['india', 'germany', 'france', 'china', 'canada']


#theory // Just Python
Jedi

Библиотека Jedi предназначена для автодополнения и анализа кода. Она ускоряет процесс написания кода и делает его более продуктивным.

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

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

Ссылочка на доку

#theory // Just Python
howdoi

Зависли над какой-то проблемой и не можете вспомнить её решение? Нужно зайти на StackOverflow, но не хочется покидать терминал?

Тогда вам не обойтись без этого инструмента командной строки:

$ pip install howdoi


Задайте любой вопрос, и он постарается найти ответ на него:

$ howdoi vertical align css
$ howdoi for loop in java
$ howdoi undo commits in git


Но будьте осторожны: он извлекает код из топовых ответов на StackOverflow и не всегда даёт полезную информацию:

$ howdoi exit vim

#theory // Just Python
sqlite 3 для специалистов по данным & инженеров

К радости специалистов по данным и инженеров, Python поставляется со встроенной поддержкой баз данных и SQL через библиотеку sqlite3.

Просто подключитесь к любой базе данных (или создайте её) с помощью объекта подключения и запускайте SQL-запросы.

Ссылочка на доку

#theory // Just Python
Queue

Python поддерживает многопоточность, в использовании которой помогает стандартный модуль Queue.

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

Очереди «первым пришёл — первым ушёл» («first in, first out», FIFO) позволяют извлекать объекты в порядке их добавления. Из очередей «последним пришёл — первым ушёл» («last in, first out», LIFO) можно извлекать последние добавленные объекты.

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

#theory // Just Python
Перегрузка операторов

В Python есть поддержка перегрузки операторов — одной из тех штук, о которых говорят все настоящие computer-scientis’ы.

На самом деле идея проста. Когда-нибудь задумывались, почему Python позволяет использовать оператор + как для сложения чисел, так и для конкатенации строк? За этим как раз и стоит перегрузка операторов.

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

#theory // Just Python
__repr__

Пр
и определении класса или объекта полезно добавлять «официальный» способ представления объекта строкой. Например:

>>> file = open('file.txt', 'r')
>>> print(file)
<open file 'file.txt', mode 'r' at 0x10d30aaf0>


Это сильно упрощает отладку. Вот всё, что вам нужно сделать:

class SomeClass:
def __repr__(self):
return "<какое-то описание>"

some_instance = SomeClass()

# выводит <какое-то описание>
print(some_instance)


repr__repr__() позволяет определять строковое представление, предназначенное для программиста и удобное при использовании во время отладstr __str__() позволяет определять понятное пользователю строковое представление, которое можно отображать в интерфейсе программы.

#theory // Just Python
sh

Python — отличный скриптовый язык. Но иногда стандартные библиотеки os и subprocess вызывают только головную боль.

Библиотека sh может стать приятной альтернативой. Она позволяет вызывать любую программу как обычную функцию, что полезно для автоматизации различных задач исключительно с помощью Python.

Библиотека sh поддерживает только платформы Linux и macOS; для работы на Windows вам придётся поискать другой инструмент.

Ссылочка на доку

#theory // Just Python
wikipedia

У Wikipedia есть классное API, которое позволяет получить доступ к непревзойдённому источнику полностью бесплатной информации.

Модуль wikipedia делает доступ к этому API чуть ли чрезмерно удобным.

Как и настоящий сайт, модуль предоставляет поддержку многих языков, разрешение многозначности страниц, получение случайной страницы и даже метод donate().

#theory // Just Python
Многоточие в Python

Многоточие Python – это последовательность из трех точек, часто используемая в естественных языках. Но чего вы, возможно, не знаете – это еще и валидный объект в Python:

>>> ...
Ellipsis


Применяется он преимущественно в операциях нарезки матриц в NumPy. Однако можно использовать его вместо обычного pass в качестве плэйсхолдера в функции, которую еще не реализовали:

python        
def my_awesome_func():
...


Вот валидный код Python, и выглядит он теперь не так уж плохо.

#theory // Just Python
PyYAML

YAML означает «YAML — не язык разметки» («YAML Ain’t Markup Language»). Это язык форматирования данных, являющийся надмножеством JSON.

В отличие от JSON, YAML может хранить более сложные объекты и ссылаться на собственные элементы. Также там можно писать комментарии, что делает YAML подходящим для конфигурационных файлов.


Модуль PyYAML позволяет использовать YAML в Python. PyYAML позволяет хранить любые Python-объекты и экземпляры любых пользовательских классов.

Ссылочка на доку

#theory // Just Python
Классы данных

Начиная с версии 3.7, Python поставляется с классами данных. У них есть несколько преимуществ по сравнению с обычными классами или другими альтернативами:
возврат нескольких значений или словарей;
класс данных требует минимального количества кода;
возможность сравнения классов данных;
возможность распечатать класс данных для отладки при помощи repr;
снижение вероятности ошибок в связи с требованием класса данных type hints.

#theory // Just Python
Обязательные аргументы

Для принудительного использования аргументов ставьте символ звездочки (*) перед ними, заставляя все аргументы стать ключевыми.

#theory // Just Python
Декорируем функции

Декоратор – это обертка вокруг функции, которая определенным образом изменяет ее поведение. Существуют варианты использования декораторов, и вы, возможно, уже применяли их раньше при работе с такими фреймворками, как Flask.

def print_argument(func):
def wrapper(the_number):
print("Argument for",
func.__name__,
"is", the_number)
return func(the_number)
return wrapper
@print_argument
def add_one(x):
return x + 1
print(add_one(1))


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

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

Argument for add_one is 1
2


#theory // Just Python
Декоратор для автоматического кэширования результатов функций

Кэширование — это техника, которая позволяет значительно улучшить производительность, сохраняя результаты вызовов функций и возвращая кэшированные результаты для одинаковых входных данных.

В Python можно создать декоратор, который автоматически кэширует результаты функций.

#theory // Just Python
Ленивая инициализация свойств с помощью дескрипторов

Дескрипторы в Python позволяют управлять доступом к атрибутам объекта.

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

#theory // Just Python
Декоратор для кэширования результатов функций с учетом аргументов

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

Данный декоратор кэширует результаты функции в зависимости от переданных аргументов, что делает его гибким и эффективным.

#theory // Just Python
Использование генераторов для создания бесконечных последовательностей в Python

Генераторы в Python позволяют создавать ленивые последовательности, которые вычисляются по мере необходимости.

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

#theory // Just Python