Контекстные менеджеры
Контекстные менеджеры позволяют задать поведение при работе с конструкцией
Простейшей функцией, использующей данный принцип является функция
Чтобы каждый раз не вызывать метод
Контекстные менеджеры позволяют задать поведение при работе с конструкцией
with
: при входе и выходе из блока. Это упрощает работу с ресурсами в части их захвата и освобождения; транзакциями, когда нужно либо полностью закончить транзакцию, либо откатить ее целиком. Простейшей функцией, использующей данный принцип является функция
open
. Каждый раз, когда мы открываем файл, нам необходимо его закрыть, чтобы вытолкнуть выходные данные на диск (на самом деле Python вызывает метод close
автоматически, но явное его использование является хорошим тоном). Чтобы каждый раз не вызывать метод
close
мы можем воспользоваться контекстным менеджером функции open
, который автоматически закроет файл после выхода из блока.Вирус локер на Python и Tkinter
Локер – популярный вид вирусов, который блокирует компьютер, и чаще всего злоумышленники просят что-либо взамен на разблокировку. Именно это мы сегодня и будем реализовывать.
Читать 4 минуты
Локер – популярный вид вирусов, который блокирует компьютер, и чаще всего злоумышленники просят что-либо взамен на разблокировку. Именно это мы сегодня и будем реализовывать.
Читать 4 минуты
Teletype
Вирус локер на Python и Tkinter
Реализация популярного вируса в простой форме.
Создаём свой контекстный менеджер
Привет, в четверг на канале вышел небольшой пост про контекстные менеджеры. Сейчас разберём, как их можно реализовать.
В любом контекстном менеджере должны быть определены методы
Метод
А более подробно мы рассказываем про эту тему в нашем курсе по продвинутым темам.
Привет, в четверг на канале вышел небольшой пост про контекстные менеджеры. Сейчас разберём, как их можно реализовать.
В любом контекстном менеджере должны быть определены методы
__enter__
и __exit__
. В качестве примера создадим подобие уже существующего open
.Метод
__enter__
вызывается автоматически и возвращает объект файла. После того, как блок with
заканчивается, также вызывается метод __exit__
, который закрывает файл. А более подробно мы рассказываем про эту тему в нашем курсе по продвинутым темам.
Создание функций на основе других с "замороженными" параметрами
Привет, сегодня поговорим про очень важную функцию
Данная функция принимает в качестве первого аргумента любую другую функцию, а дальше параметры, которые будут автоматически переданы в эту функцию при вызове уже новой функции, которую вернёт
Например, можем создать функцию, которая умножает два числа, а потом "заморозить" один аргумент, как на картинке.
Привет, сегодня поговорим про очень важную функцию
partial
из пакета functools
. Более подробно мы рассказываем про это в курсе, но сейчас дадим краткое описание работы.Данная функция принимает в качестве первого аргумента любую другую функцию, а дальше параметры, которые будут автоматически переданы в эту функцию при вызове уже новой функции, которую вернёт
partial
.Например, можем создать функцию, которая умножает два числа, а потом "заморозить" один аргумент, как на картинке.
Функция itertools.cycle
Напоминаю, что у нас всё ещё идёт набор на курс, который начинается уже в этот понедельник. А сейчас покажу вам кое-что интересное из курса.
В лекции, посвященной итераторам и генераторам, мы также показываем полезные функции из пакета
А далее, например, можно воспользоваться
Напоминаю, что у нас всё ещё идёт набор на курс, который начинается уже в этот понедельник. А сейчас покажу вам кое-что интересное из курса.
В лекции, посвященной итераторам и генераторам, мы также показываем полезные функции из пакета
itertools
. К примеру, метод cycle
из последовательности ['red', 'white', 'blue']
генерирует повторяющуюся бесконечную.А далее, например, можно воспользоваться
islice
. Он возвращает конечный итератор из любой большой или даже бесконечной последовательности.Последний релиз Python 2.x
Кстати говоря, не так давно вышла последняя версия Python 2.7, а именно Python 2.7.18.
Эта версия является особенным выпуском. Я имею в виду, конечно, тот факт, что "2.7.18" является ближайшим номером версии Python которая примерно равна числу e, или числу Эйлера.
Менее трансцендентное свойство Python 2.7.18 заключается в том, что это последний выпуск Python 2.7. и, следовательно, последний выпуск Python 2.
Любителям CPython пришло время попрощаться с Python 2. Эта версия поддерживалась почти 10 лет параллельно с обратно-несовместимыми версиями Python 3. Теперь же остаётся только одна версия языка, которая продолжит развиваться.
Скачать последнюю версию языка можно по этой ссылке.
Кстати говоря, не так давно вышла последняя версия Python 2.7, а именно Python 2.7.18.
Эта версия является особенным выпуском. Я имею в виду, конечно, тот факт, что "2.7.18" является ближайшим номером версии Python которая примерно равна числу e, или числу Эйлера.
Менее трансцендентное свойство Python 2.7.18 заключается в том, что это последний выпуск Python 2.7. и, следовательно, последний выпуск Python 2.
Любителям CPython пришло время попрощаться с Python 2. Эта версия поддерживалась почти 10 лет параллельно с обратно-несовместимыми версиями Python 3. Теперь же остаётся только одна версия языка, которая продолжит развиваться.
Скачать последнюю версию языка можно по этой ссылке.
Моржовый оператор (Walrus Operator)
Новый способ присваивания выражения (
Присваивания с помощью моржа требуется делать в круглых скобках, и перед знаком равно пишется двоеточие. Внутри скобок либо создается новая переменная, либо происходит присвоение значения уже существующий переменной.
Но фишка заключается в том, что вся эта конструкция, скажем так, возвращает присвоенное значение, как это делают обычные функции. А если хотите практические примеры, то напишите плюсик в чат.
#тонкости
Новый способ присваивания выражения (
:=
), или оператор «морж», был самой обсуждаемой функцией, представленной в Python версии 3.8. Новое дополнение к языку было предложено в PEP 572.Присваивания с помощью моржа требуется делать в круглых скобках, и перед знаком равно пишется двоеточие. Внутри скобок либо создается новая переменная, либо происходит присвоение значения уже существующий переменной.
Но фишка заключается в том, что вся эта конструкция, скажем так, возвращает присвоенное значение, как это делают обычные функции. А если хотите практические примеры, то напишите плюсик в чат.
#тонкости
Моржовый оператор – примеры
В предыдущем посте мы обсудили синтаксис нового оператора присваивания. В чате появилось достаточное количество просьб продолжить, поэтому в этом посте мы рассмотрим частные случаи, когда морж в коде выглядит солидно.
Но для начала стоит отметить ещё один важный момент – моржовый оператор не создаёт новую область видимости. То есть переменная, созданная в условии конструкции
#тонкости
В предыдущем посте мы обсудили синтаксис нового оператора присваивания. В чате появилось достаточное количество просьб продолжить, поэтому в этом посте мы рассмотрим частные случаи, когда морж в коде выглядит солидно.
Но для начала стоит отметить ещё один важный момент – моржовый оператор не создаёт новую область видимости. То есть переменная, созданная в условии конструкции
if-else
с помощью моржа, также будет доступна и за пределом блока.#тонкости
3 трюка с itertools
Сегодня мы рассмотрим несколько функций из довольно полезного модуля, позволяющих эффективно работать с итерируемыми объектами. Начнём с очень простой функции –
Далее,
А для того, чтобы создавать комбинации из элементов выбранного итерируемого объекта, вам понадобится функция
#модули #itertools
Сегодня мы рассмотрим несколько функций из довольно полезного модуля, позволяющих эффективно работать с итерируемыми объектами. Начнём с очень простой функции –
chain
. Она позволяет "склеивать" несколько итерируемых элементов в один.Далее,
accumulate
. Эта функция немного похожа на reduce
, но вместо того, чтобы давать одно окончательное значение, она последовательно применяет функцию, заданную вторым аргументом (в данном случае min
), к каждому последующему элементу по порядку: min(11)
, min(11, 3)
, min(11, 3, 9)
и так далее.А для того, чтобы создавать комбинации из элементов выбранного итерируемого объекта, вам понадобится функция
combinations
. Вторым аргументом можно задать длину этой самой комбинации.#модули #itertools
Топ 5 асинхронных веб-фреймворков на Python
Асинхронность уже не является просто модным словечком в сообществе Python. Новые и старые библиотеки начали использовать функционал корутин, асинхронные фреймворки взорвались популярностью, а на сегодняшний день пишут всё больше и больше новых модулей.
Тему асинхронности уже невозможно игнорировать, поэтому сегодня мы подготовили для вас крайне интересную статью, в которой рассказали про самые перспективные асинхронные веб-фреймворки в 2020 году.
Читать 6 минут
#статья
Асинхронность уже не является просто модным словечком в сообществе Python. Новые и старые библиотеки начали использовать функционал корутин, асинхронные фреймворки взорвались популярностью, а на сегодняшний день пишут всё больше и больше новых модулей.
Тему асинхронности уже невозможно игнорировать, поэтому сегодня мы подготовили для вас крайне интересную статью, в которой рассказали про самые перспективные асинхронные веб-фреймворки в 2020 году.
Читать 6 минут
#статья
Правильным ответом является [1, 2]
Происходит так из-за того, что дефолтные параметры хранятся в неизменном кортеже в атрибуте функции
А для того, чтобы добиться правильного поведения функции, следует воспользоваться ключевым словом
Происходит так из-за того, что дефолтные параметры хранятся в неизменном кортеже в атрибуте функции
defaults
, который создается один раз в момент определения функции.А для того, чтобы добиться правильного поведения функции, следует воспользоваться ключевым словом
None
при определении аргументов по-умолчанию.Another yet itertools tricks
Всем привет! Не так давно мы рассматривали 3 трюка с модулем
Начнем с функции
Для того, чтобы составить комбинацию с повторениями, используют функцию
Ну и в заключение, рассмотрим функцию
#модули #itertools
Всем привет! Не так давно мы рассматривали 3 трюка с модулем
itertools
. Сегодня мы рассмотрим еще несколько полезных фишек этого крутого модуля.Начнем с функции
combinations
. Она позволяет составлять комбинации элементов из итерируемых объектов без повторений. Первый аргумент это сам объект, а второй – длина комбинации.Для того, чтобы составить комбинацию с повторениями, используют функцию
combinations_with_replacement
. Делает она абсолютно все то же самое что и предыдущая, с одним исключением – теперь в комбинации могут быть повторы.Ну и в заключение, рассмотрим функцию
compress
, применяющую "маску" из второго аргумента функции к первому. То есть, если в маске на этом месте стоит единица, то в исходном массиве цифра остается нетронутой, и наоборот.#модули #itertools
Method Resolution Order
В Python существует так называемый Method Resolution Order (MRO), или порядок разрешения методов. Всё, что вам нужно знать – это порядок, в котором Python ищет нужный атрибут или метод.
Этот порядок можно получить при помощи атрибута
Отсюда становится понятно, что артибут первее будет найден именно в классе
В Python существует так называемый Method Resolution Order (MRO), или порядок разрешения методов. Всё, что вам нужно знать – это порядок, в котором Python ищет нужный атрибут или метод.
Этот порядок можно получить при помощи атрибута
__mro__
. Он говорит о том, что если мы в примере выше попробуем обратиться к атрибуту value
, Python будет искать сначала в классе A
, далее в B
, затем в C
и в самом конце в object
. Отсюда становится понятно, что артибут первее будет найден именно в классе
B
и равен он будет значению 1
.Вечный вопрос: Django или Flask
Практически все сталкиваются с этим выбором, когда начинают писать серверную часть для веб-приложений. Оба фреймворка крайне мощные, но всё-таки надо для начала выбрать один из них.
Django является более монолитным и предоставляет сразу множество инструментов из коробки, а Flask в свою очередь гибкий и минималистичный.
В случае, если в приоритете трудоустройство, то следует изучать Django, так как он наиболле востребованный. Но если вы хотите создавать пет-проекты или просто изучать веб в целом, то рекомендую рассматривать Flask.
#мнение
Практически все сталкиваются с этим выбором, когда начинают писать серверную часть для веб-приложений. Оба фреймворка крайне мощные, но всё-таки надо для начала выбрать один из них.
Django является более монолитным и предоставляет сразу множество инструментов из коробки, а Flask в свою очередь гибкий и минималистичный.
В случае, если в приоритете трудоустройство, то следует изучать Django, так как он наиболле востребованный. Но если вы хотите создавать пет-проекты или просто изучать веб в целом, то рекомендую рассматривать Flask.
#мнение
Pandas для начинающих
На сегодняшний день, пакет Pandas – самый важный инструмент во всем, что касается анализа данных. И если вы думаете о карьере в области Data Science, то крайне важно уметь работать с этим пакетом.
В этой статье мы рассмотрим наиболее важную информацию о Pandas и научимся использовать основные его функции для работы с данными.
Читать 8 минут
#статья
На сегодняшний день, пакет Pandas – самый важный инструмент во всем, что касается анализа данных. И если вы думаете о карьере в области Data Science, то крайне важно уметь работать с этим пакетом.
В этой статье мы рассмотрим наиболее важную информацию о Pandas и научимся использовать основные его функции для работы с данными.
Читать 8 минут
#статья