PySnooper
PySnooper — это библиотека для Python, которая позволяет вам добавлять отладочные точки в ваш код для отслеживания значений переменных и выполнения дополнительных действий при выполнении программы. Это полезный инструмент для отладки, поскольку он позволяет вам легко исследовать, какие значения принимают переменные в определенный момент времени и какой код выполняется.
При выполнении функции из примера PySnooper будет записывать значения переменных и их изменения во время выполнения функции в стандартный вывод, что облегчает отладку. Вы также можете настроить PySnooper для записи данных в файлы и выполнять другие действия при отладке.
🔗 Python tricks
PySnooper — это библиотека для Python, которая позволяет вам добавлять отладочные точки в ваш код для отслеживания значений переменных и выполнения дополнительных действий при выполнении программы. Это полезный инструмент для отладки, поскольку он позволяет вам легко исследовать, какие значения принимают переменные в определенный момент времени и какой код выполняется.
При выполнении функции из примера PySnooper будет записывать значения переменных и их изменения во время выполнения функции в стандартный вывод, что облегчает отладку. Вы также можете настроить PySnooper для записи данных в файлы и выполнять другие действия при отладке.
🔗 Python tricks
Списковые включения
Возможно где-то до этого ты уже мог слышать понятие «list comprehensions». Это такой способ уместить цикл for, блок if и присваивание в одну строку.
Начнем с простейшего примера. Допустим, нам снова надо возвести в квадрат все элементы списка.
Да, определенно этот код короче предыдущего, но всё еще некрасив. С первого взгляда сложно сказать, что делает функция map (она принимает в качестве аргументов функцию и список и применяет функцию к каждому элементу списка). К тому же мы вынуждены определять функцию, это выглядит довольно беспорядочно.
Но, оказывается, можно писать проще и понятнее
🔗 Python tricks
Возможно где-то до этого ты уже мог слышать понятие «list comprehensions». Это такой способ уместить цикл for, блок if и присваивание в одну строку.
Начнем с простейшего примера. Допустим, нам снова надо возвести в квадрат все элементы списка.
Да, определенно этот код короче предыдущего, но всё еще некрасив. С первого взгляда сложно сказать, что делает функция map (она принимает в качестве аргументов функцию и список и применяет функцию к каждому элементу списка). К тому же мы вынуждены определять функцию, это выглядит довольно беспорядочно.
Но, оказывается, можно писать проще и понятнее
🔗 Python tricks
Обмен значениями при помощи кортежей
Один из популярных трюков в Python – обмен значениями без создания временной переменной. Способ применим для любого числа переменных.
В правой части инструкции присваивания последовательностей допускается указывать любые итерируемые объекты. Главное, чтобы число элементов слева равнялось числу элементов справа. Такое присваивание применяется и для сложных вложенных конструкций.
🔗 Python tricks
Один из популярных трюков в Python – обмен значениями без создания временной переменной. Способ применим для любого числа переменных.
В правой части инструкции присваивания последовательностей допускается указывать любые итерируемые объекты. Главное, чтобы число элементов слева равнялось числу элементов справа. Такое присваивание применяется и для сложных вложенных конструкций.
🔗 Python tricks
Удаление дубликатов в списке
Среди регулярно используемых трюков в Python – преобразование списка во множество и обратно в список для удаления повторяющихся элементов списка
Но множества – это неупорядоченные последовательности. Часто стоит задача сохранить порядок следования элементов. Для этого удобно воспользоваться типом данных OrderedDict из модуля collections
🔗 Python tricks
Среди регулярно используемых трюков в Python – преобразование списка во множество и обратно в список для удаления повторяющихся элементов списка
Но множества – это неупорядоченные последовательности. Часто стоит задача сохранить порядок следования элементов. Для этого удобно воспользоваться типом данных OrderedDict из модуля collections
🔗 Python tricks
Особые методы сравнения множеств (set, frozenset)
set_a.isdisjoint(set_b) — истина, если set_a и set_b не имеют общих элементов.
set_b.issubset(set_a) — если все элементы множества set_b принадлежат множеству set_a, то множество set_b целиком входит в множество set_a и является его подмножеством (set_b — подмножество)
set_a.issuperset(set_b) — соответственно, если условие выше справедливо, то set_a — надмножество
🔗 Python tricks
set_a.isdisjoint(set_b) — истина, если set_a и set_b не имеют общих элементов.
set_b.issubset(set_a) — если все элементы множества set_b принадлежат множеству set_a, то множество set_b целиком входит в множество set_a и является его подмножеством (set_b — подмножество)
set_a.issuperset(set_b) — соответственно, если условие выше справедливо, то set_a — надмножество
🔗 Python tricks
Функции min(), max(), sum()
Функции min(), max() — поиск минимального и максимального элемента соответственно — работают не только для числовых, но и для строковых значений.
sum() — суммирование всех элементов, если они все числовые.
🔗 Python tricks
Функции min(), max() — поиск минимального и максимального элемента соответственно — работают не только для числовых, но и для строковых значений.
sum() — суммирование всех элементов, если они все числовые.
🔗 Python tricks
Возможная ошибка при обработке элементов
Не меняйте количество элементов коллекции в теле цикла во время итерации по этой же коллекции! — Это порождает не всегда очевидные на первый взгляд ошибки. Чтобы этого избежать подобных побочных эффектов, можно, например, итерировать копию коллекции.
🔗 Python tricks
Не меняйте количество элементов коллекции в теле цикла во время итерации по этой же коллекции! — Это порождает не всегда очевидные на первый взгляд ошибки. Чтобы этого избежать подобных побочных эффектов, можно, например, итерировать копию коллекции.
🔗 Python tricks
Arrow
Arrow — это мощная библиотека, которая упрощает работу с датами и временем, делая код более читаемым и поддерживаемым. Она предоставляет множество удобных функций для обработки времени в Python и является отличной альтернативой стандартному модулю
Вот некоторые из ключевых особенностей:
1.
2. Для работы с датами вы можете выполнять арифметические операции, добавлять и вычитать дни, часы, минуты и другие временные интервалы.
3. Вы можете легко создавать объекты
4.
5.
🔗 Python tricks
Arrow — это мощная библиотека, которая упрощает работу с датами и временем, делая код более читаемым и поддерживаемым. Она предоставляет множество удобных функций для обработки времени в Python и является отличной альтернативой стандартному модулю
datetime
.Вот некоторые из ключевых особенностей:
1.
Arrow
предоставляет различные способы создания объектов Arrow. Вы можете создать объект Arrow
, представляющий текущее время, с использованием arrow.now()
, или указать конкретную дату и время.2. Для работы с датами вы можете выполнять арифметические операции, добавлять и вычитать дни, часы, минуты и другие временные интервалы.
3. Вы можете легко создавать объекты
Arrow
с указанием конкретной временной зоны и выполнять конвертацию между ними.4.
Arrow
предоставляет метод format
, который позволяет легко форматировать дату и время в строку в соответствии с заданным форматом.5.
Arrow
позволяет представлять даты и время в словесном формате, типа «сегодня», «вчера» и «завтра».🔗 Python tricks
Что такое %s?
🔗 Python tricks
%s
— это специальное форматирующее поле, которое используется для вставки строковых значений в другие строки, а также для форматирования строк. Он является частью строкового форматирования, используемого в функциях print()
, str.format()
, и старом стиле форматирования с оператором %
.🔗 Python tricks
Изменение элемента списка по индексу (ч.1)
Поскольку кортежи и строки у нас неизменяемые коллекции, то по индексу мы можем только брать элементы, но не менять их
🔗 Python tricks
Поскольку кортежи и строки у нас неизменяемые коллекции, то по индексу мы можем только брать элементы, но не менять их
🔗 Python tricks
Изменение элемента списка по индексу (ч.2)
А вот для списка, если взятие элемента по индексу располагается в левой части выражения, а далее идёт оператор присваивания =, то мы задаём новое значение элементу с этим индексом.
🔗 Python tricks
А вот для списка, если взятие элемента по индексу располагается в левой части выражения, а далее идёт оператор присваивания =, то мы задаём новое значение элементу с этим индексом.
🔗 Python tricks
Mypy
Mypy — это инструмент для статической типизации в Python. Он добавляет дополнительный слой проверки типов в ваш код, что помогает обнаруживать и предотвращать ошибки, связанные с типами данных, на этапе разработки, до выполнения программы.
Статическая типизация означает, что вы аннотируете типы для переменных, аргументов функций и возвращаемых значений в своем коде. Эти аннотации указывают Mypy, какие типы ожидаются для каждой переменной и выражения.
Mypy выполняет проверку типов на основе аннотаций, проверяя код на соответствие указанным типам. Если обнаруживаются несоответствия, Mypy генерирует ошибки или предупреждения, указывая на место, где ошибка произошла.
Это помогает повысить надежность и читаемость кода. Аннотации типов делают код более понятным и документируют ожидаемую структуру данных, что облегчает совместную работу в команде.
🔗 Python tricks
Mypy — это инструмент для статической типизации в Python. Он добавляет дополнительный слой проверки типов в ваш код, что помогает обнаруживать и предотвращать ошибки, связанные с типами данных, на этапе разработки, до выполнения программы.
Статическая типизация означает, что вы аннотируете типы для переменных, аргументов функций и возвращаемых значений в своем коде. Эти аннотации указывают Mypy, какие типы ожидаются для каждой переменной и выражения.
Mypy выполняет проверку типов на основе аннотаций, проверяя код на соответствие указанным типам. Если обнаруживаются несоответствия, Mypy генерирует ошибки или предупреждения, указывая на место, где ошибка произошла.
Это помогает повысить надежность и читаемость кода. Аннотации типов делают код более понятным и документируют ожидаемую структуру данных, что облегчает совместную работу в команде.
🔗 Python tricks
LineaPy
LineaPy — это библиотека для работы с временными рядами и анализа временных данных.
Эта библиотека позволяет быстро решать типовые задачи анализа временных рядов без необходимости "изобретать велосипед".
Она удобна для анализа временных данных в задачах прогнозирования, мониторинга, выявления сезонности, трендов и аномалий. Имеет интуитивный API и хорошую документацию.
В этом примере мы получили прогнозные значения временного ряда на 5 периодов вперед с помощью модели ARIMA из LineaPy за считанные строки кода.
🔗 Python tricks
LineaPy — это библиотека для работы с временными рядами и анализа временных данных.
Эта библиотека позволяет быстро решать типовые задачи анализа временных рядов без необходимости "изобретать велосипед".
Она удобна для анализа временных данных в задачах прогнозирования, мониторинга, выявления сезонности, трендов и аномалий. Имеет интуитивный API и хорошую документацию.
В этом примере мы получили прогнозные значения временного ряда на 5 периодов вперед с помощью модели ARIMA из LineaPy за считанные строки кода.
🔗 Python tricks
Библиотека astropy
astropy — это библиотека для астрономии и астрофизики на Python.
Она содержит функционал для работы с астрономическими данными в разных форматах, включая FITS, ASCII и VOTable.
— Предоставляет классы и утилиты для представления и преобразования координат, дат, времени.
— Содержит поддержку физических величин с общим интерфейсом для работы с единицами измерения.
— Встроены статистические и математические функции, полезные для астрономии.
— Имеются утилиты для чтения данных из астрономических каталогов и баз.
🔗 Python tricks
astropy — это библиотека для астрономии и астрофизики на Python.
Она содержит функционал для работы с астрономическими данными в разных форматах, включая FITS, ASCII и VOTable.
— Предоставляет классы и утилиты для представления и преобразования координат, дат, времени.
— Содержит поддержку физических величин с общим интерфейсом для работы с единицами измерения.
— Встроены статистические и математические функции, полезные для астрономии.
— Имеются утилиты для чтения данных из астрономических каталогов и баз.
аstropy
легко расширяема — можно добавлять собственные пакеты для специфичных задач.🔗 Python tricks
string.encode
Метод encode() возвращает закодированную версию заданной строки. По умолчанию метод encode() не требует никаких параметров. Он возвращает версию строки в кодировке utf-8. В случае сбоя возникает исключение UnicodeDecodeError. Используя метод string encode(), ты можешь конвертировать строки Юникода в любые кодировки, поддерживаемые Python. С помощью параметра errors ты можешь задать ответ при сбое кодирования.
🔗 Python tricks
Метод encode() возвращает закодированную версию заданной строки. По умолчанию метод encode() не требует никаких параметров. Он возвращает версию строки в кодировке utf-8. В случае сбоя возникает исключение UnicodeDecodeError. Используя метод string encode(), ты можешь конвертировать строки Юникода в любые кодировки, поддерживаемые Python. С помощью параметра errors ты можешь задать ответ при сбое кодирования.
🔗 Python tricks
Синтаксис среза
Следует помнить, что взяв элемент по индексу или срезом (slice) мы не как не меняем исходную коллекцию, мы просто скопировали ее часть для дальнейшего использования (например добавления в другую коллекцию, вывода на печать, каких-то вычислений). Поскольку сама коллекция не меняется — это применимо как к изменяемым (список) так и к неизменяемым (строка, кортеж) последовательностям.
🔗 Python tricks
Следует помнить, что взяв элемент по индексу или срезом (slice) мы не как не меняем исходную коллекцию, мы просто скопировали ее часть для дальнейшего использования (например добавления в другую коллекцию, вывода на печать, каких-то вычислений). Поскольку сама коллекция не меняется — это применимо как к изменяемым (список) так и к неизменяемым (строка, кортеж) последовательностям.
🔗 Python tricks
Изменение списка срезом (ч.1)
Важный момент, на котором не всегда заостряется внимание — с помощью среза можно не только получать копию коллекции, но в случае списка можно также менять значения элементов, удалять и добавлять новые.
Даже если хотим добавить один элемент, необходимо передавать итерируемый объект, иначе будет ошибка TypeError: can only assign an iterable
🔗 Python tricks
Важный момент, на котором не всегда заостряется внимание — с помощью среза можно не только получать копию коллекции, но в случае списка можно также менять значения элементов, удалять и добавлять новые.
Даже если хотим добавить один элемент, необходимо передавать итерируемый объект, иначе будет ошибка TypeError: can only assign an iterable
🔗 Python tricks
Изменение списка срезом (ч.2)
Можно менять части последовательности — это применение выглядит наиболее интересным, так как решает задачу просто и наглядно.
🔗 Python tricks
Можно менять части последовательности — это применение выглядит наиболее интересным, так как решает задачу просто и наглядно.
🔗 Python tricks
Именованные срезы
Чтобы избавится от «магических констант», особенно в случае, когда один и тот же срез надо применять многократно, можно задать константы с именованными срезами с пользованием специальной функции slice()()
Примечание: Nonе соответствует опущенному значению по-умолчанию. То есть [:2] становится slice(None, 2), а [1::2] становится slice(1, None, 2).
🔗 Python tricks
Чтобы избавится от «магических констант», особенно в случае, когда один и тот же срез надо применять многократно, можно задать константы с именованными срезами с пользованием специальной функции slice()()
Примечание: Nonе соответствует опущенному значению по-умолчанию. То есть [:2] становится slice(None, 2), а [1::2] становится slice(1, None, 2).
🔗 Python tricks
Конвертация одного типа коллекции в другой
В зависимости от стоящих задач, один тип коллекции можно конвертировать в другой тип коллекции. Для этого, как правило достаточно передать одну коллекцию в функцию создания другой.
🔗 Python tricks
В зависимости от стоящих задач, один тип коллекции можно конвертировать в другой тип коллекции. Для этого, как правило достаточно передать одну коллекцию в функцию создания другой.
🔗 Python tricks
Выход за границы индекса
Обращение по индексу по сути является частным случаем среза, когда мы обращаемся только к одному элементу, а не диапазону. Но есть очень важное отличие в обработке ситуации с отсутствующим элементом с искомым индексом.
Обращение к несуществующему индексу коллекции вызывает ошибку
🔗 Python tricks
Обращение по индексу по сути является частным случаем среза, когда мы обращаемся только к одному элементу, а не диапазону. Но есть очень важное отличие в обработке ситуации с отсутствующим элементом с искомым индексом.
Обращение к несуществующему индексу коллекции вызывает ошибку
🔗 Python tricks