Преобразование двух списков в словарь
Предположим, у нас имеется два списка. Один из них содержит имена студентов, а второй — их оценки. Как преобразовать эти два списка в словарь?
Для решения задачи можно прибегнуть к функции
#theory // Just Python
Предположим, у нас имеется два списка. Один из них содержит имена студентов, а второй — их оценки. Как преобразовать эти два списка в словарь?
Для решения задачи можно прибегнуть к функции
zip()
.#theory // Just Python
Возврат из функции нескольких значений
В Python есть возможность возврата из функции нескольких значений. Этого нет во многих других популярных языках программирования.
Для возврата из функции нескольких значений их нужно разделить запятыми. На основе этого списка значений Python создаст кортеж и вернёт его туда, откуда была вызвана функция.
#theory // Just Python
В Python есть возможность возврата из функции нескольких значений. Этого нет во многих других популярных языках программирования.
Для возврата из функции нескольких значений их нужно разделить запятыми. На основе этого списка значений Python создаст кортеж и вернёт его туда, откуда была вызвана функция.
#theory // Just Python
Использование функции sorted()
В Python очень легко сортировать некие последовательности данных с использованием встроенной функции
Эта функция сортирует любые последовательности (списки, кортежи) и всегда возвращает список с отсортированными элементами. Рассмотрим пример сортировки списка чисел в порядке возрастания:
А вот — пример сортировки списка строк в порядке убывания:
#theory // Just Python
В 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
Библиотека Jedi предназначена для автодополнения и анализа кода. Она ускоряет процесс написания кода и делает его более продуктивным.
Если вы не разрабатываете свою IDE, то вам, наверное, будет более интересно использовать Jedi в качестве расширения редактора. К счастью, уже есть много вариантов.
Возможно, вы уже встречались с Jedi — IPython использует эту библиотеку для автодополнения.
Ссылочка на доку
#theory // Just Python
howdoi
Зависли над какой-то проблемой и не можете вспомнить её решение? Нужно зайти на StackOverflow, но не хочется покидать терминал?
Тогда вам не обойтись без этого инструмента командной строки:
Задайте любой вопрос, и он постарается найти ответ на него:
Но будьте осторожны: он извлекает код из топовых ответов на StackOverflow и не всегда даёт полезную информацию:
#theory // Just Python
Зависли над какой-то проблемой и не можете вспомнить её решение? Нужно зайти на 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
К радости специалистов по данным и инженеров, Python поставляется со встроенной поддержкой баз данных и SQL через библиотеку sqlite3.
Просто подключитесь к любой базе данных (или создайте её) с помощью объекта подключения и запускайте SQL-запросы.
Ссылочка на доку
#theory // Just Python
Queue
Python поддерживает многопоточность, в использовании которой помогает стандартный модуль Queue.
Он позволяет реализовывать такую структуру данных, как очередь. Очереди позволяют добавлять и извлекать элементы согласно определённому правилу.
Очереди «первым пришёл — первым ушёл» («first in, first out», FIFO) позволяют извлекать объекты в порядке их добавления. Из очередей «последним пришёл — первым ушёл» («last in, first out», LIFO) можно извлекать последние добавленные объекты.
Наконец, приоритетные очереди позволяют извлекать объекты согласно порядку их сортировки.
#theory // Just Python
Python поддерживает многопоточность, в использовании которой помогает стандартный модуль Queue.
Он позволяет реализовывать такую структуру данных, как очередь. Очереди позволяют добавлять и извлекать элементы согласно определённому правилу.
Очереди «первым пришёл — первым ушёл» («first in, first out», FIFO) позволяют извлекать объекты в порядке их добавления. Из очередей «последним пришёл — первым ушёл» («last in, first out», LIFO) можно извлекать последние добавленные объекты.
Наконец, приоритетные очереди позволяют извлекать объекты согласно порядку их сортировки.
#theory // Just Python
Перегрузка операторов
В Python есть поддержка перегрузки операторов — одной из тех штук, о которых говорят все настоящие computer-scientis’ы.
На самом деле идея проста. Когда-нибудь задумывались, почему Python позволяет использовать оператор + как для сложения чисел, так и для конкатенации строк? За этим как раз и стоит перегрузка операторов.
Вы можете определять объекты, которые используют стандартные символы операторов любым образом. Это позволяет применять их в контексте объектов, с которыми вы работаете.
#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 — отличный скриптовый язык. Но иногда стандартные библиотеки
Библиотека sh может стать приятной альтернативой. Она позволяет вызывать любую программу как обычную функцию, что полезно для автоматизации различных задач исключительно с помощью Python.
Библиотека
Ссылочка на доку
#theory // Just Python
Python — отличный скриптовый язык. Но иногда стандартные библиотеки
os
и subprocess
вызывают только головную боль.Библиотека sh может стать приятной альтернативой. Она позволяет вызывать любую программу как обычную функцию, что полезно для автоматизации различных задач исключительно с помощью Python.
Библиотека
sh
поддерживает только платформы Linux
и macOS
; для работы на Windows
вам придётся поискать другой инструмент.Ссылочка на доку
#theory // Just Python
wikipedia
У Wikipedia есть классное API, которое позволяет получить доступ к непревзойдённому источнику полностью бесплатной информации.
Модуль wikipedia делает доступ к этому API чуть ли чрезмерно удобным.
Как и настоящий сайт, модуль предоставляет поддержку многих языков, разрешение многозначности страниц, получение случайной страницы и даже метод donate().
#theory // Just Python
У Wikipedia есть классное API, которое позволяет получить доступ к непревзойдённому источнику полностью бесплатной информации.
Модуль wikipedia делает доступ к этому API чуть ли чрезмерно удобным.
Как и настоящий сайт, модуль предоставляет поддержку многих языков, разрешение многозначности страниц, получение случайной страницы и даже метод donate().
#theory // Just Python
Многоточие в Python
Многоточие Python – это последовательность из трех точек, часто используемая в естественных языках. Но чего вы, возможно, не знаете – это еще и валидный объект в Python:
Применяется он преимущественно в операциях нарезки матриц в NumPy. Однако можно использовать его вместо обычного pass в качестве плэйсхолдера в функции, которую еще не реализовали:
Вот валидный код Python, и выглядит он теперь не так уж плохо.
#theory // Just Python
Многоточие Python – это последовательность из трех точек, часто используемая в естественных языках. Но чего вы, возможно, не знаете – это еще и валидный объект в Python:
>>> ...
Ellipsis
Применяется он преимущественно в операциях нарезки матриц в NumPy. Однако можно использовать его вместо обычного pass в качестве плэйсхолдера в функции, которую еще не реализовали:
python
def my_awesome_func():
...
Вот валидный код Python, и выглядит он теперь не так уж плохо.
#theory // Just Python
PyYAML
YAML означает «YAML — не язык разметки» («YAML Ain’t Markup Language»). Это язык форматирования данных, являющийся надмножеством JSON.
Модуль PyYAML позволяет использовать YAML в Python. PyYAML позволяет хранить любые Python-объекты и экземпляры любых пользовательских классов.
Ссылочка на доку
#theory // Just Python
YAML означает «YAML — не язык разметки» («YAML Ain’t Markup Language»). Это язык форматирования данных, являющийся надмножеством JSON.
В отличие от JSON, YAML может хранить более сложные объекты и ссылаться на собственные элементы. Также там можно писать комментарии, что делает YAML подходящим для конфигурационных файлов.
Модуль PyYAML позволяет использовать YAML в Python. PyYAML позволяет хранить любые Python-объекты и экземпляры любых пользовательских классов.
Ссылочка на доку
#theory // Just Python
Классы данных
Начиная с версии 3.7, Python поставляется с классами данных. У них есть несколько преимуществ по сравнению с обычными классами или другими альтернативами:
#theory // Just Python
Начиная с версии 3.7, Python поставляется с классами данных. У них есть несколько преимуществ по сравнению с обычными классами или другими альтернативами:
•
возврат нескольких значений или словарей;•
класс данных требует минимального количества кода;•
возможность сравнения классов данных;•
возможность распечатать класс данных для отладки при помощи repr;•
снижение вероятности ошибок в связи с требованием класса данных type hints.#theory // Just Python
Обязательные аргументы
Для принудительного использования аргументов ставьте символ звездочки (
#theory // Just Python
Для принудительного использования аргументов ставьте символ звездочки (
*
) перед ними, заставляя все аргументы стать ключевыми.#theory // Just Python
Декорируем функции
Декоратор – это обертка вокруг функции, которая определенным образом изменяет ее поведение. Существуют варианты использования декораторов, и вы, возможно, уже применяли их раньше при работе с такими фреймворками, как Flask.
Внутри
С помощью
#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
Ленивая инициализация свойств с помощью дескрипторов
Дескрипторы в Python позволяют управлять доступом к атрибутам объекта.
С их помощью можно реализовать ленивую инициализацию свойств, что особенно полезно для дорогостоящих операций, которые нужно выполнять только при первом обращении к свойству.
#theory // Just Python
Дескрипторы в Python позволяют управлять доступом к атрибутам объекта.
С их помощью можно реализовать ленивую инициализацию свойств, что особенно полезно для дорогостоящих операций, которые нужно выполнять только при первом обращении к свойству.
#theory // Just Python
Декоратор для кэширования результатов функций с учетом аргументов
Иногда необходимо кэшировать результаты функции для повышения производительности, особенно если функция выполняет тяжелые вычисления или обращения к внешним ресурсам.
Данный декоратор кэширует результаты функции в зависимости от переданных аргументов, что делает его гибким и эффективным.
#theory // Just Python
Иногда необходимо кэшировать результаты функции для повышения производительности, особенно если функция выполняет тяжелые вычисления или обращения к внешним ресурсам.
Данный декоратор кэширует результаты функции в зависимости от переданных аргументов, что делает его гибким и эффективным.
#theory // Just Python
Использование генераторов для создания бесконечных последовательностей в Python
Генераторы в Python позволяют создавать ленивые последовательности, которые вычисляются по мере необходимости.
Это мощный инструмент для работы с большими или даже бесконечными данными, поскольку генераторы экономят память и ресурсы. Один из интересных и необычных способов использования генераторов — создание бесконечных последовательностей.
#theory // Just Python
Генераторы в Python позволяют создавать ленивые последовательности, которые вычисляются по мере необходимости.
Это мощный инструмент для работы с большими или даже бесконечными данными, поскольку генераторы экономят память и ресурсы. Один из интересных и необычных способов использования генераторов — создание бесконечных последовательностей.
#theory // Just Python