Блок else в циклах for
Хауди хо, друзья. Практически все новички теряются при виде блока
В Python блок
Типичный пример использования – поиск чего-либо в цикле с использованием ключевого слова
Хауди хо, друзья. Практически все новички теряются при виде блока
else
после циклов, поэтому сейчас немного проясним ситуацию.В Python блок
else
может быть представлен не только в условных конструкциях после if
, но и в циклах после for
и while
. В данном случае код внутри else
выполняется, только если цикл не был прерван с помощью break
.Типичный пример использования – поиск чего-либо в цикле с использованием ключевого слова
break
при нахождении, как показано на картинке. Исходный код текстом можете найти в нашем чате.Переносим проект на бесплатный хостинг
В прошлую пятницу статья зашла на ура, и многие просили сделать продолжение, в котором, мы рассказали бы, как залить на бесплатный хостинг тот скрипт с изменением аватарки в Telegram. В целом, данный метод подойдёт вообще для любых проектов. Приятного прочтения 😉
Читать 7 минут
В прошлую пятницу статья зашла на ура, и многие просили сделать продолжение, в котором, мы рассказали бы, как залить на бесплатный хостинг тот скрипт с изменением аватарки в Telegram. В целом, данный метод подойдёт вообще для любых проектов. Приятного прочтения 😉
Читать 7 минут
Teletype
Переносим проект на хостинг
В этой статье мы попробуем разместить наш код по превращению аватарки Telegram в часы на бесплатном хостинге.
Сохраняем данные с помощью pickle
Меня достаточно часто спрашивают о том, как можно быстро сохранить что-либо без использования полноценных баз данных. И сейчас я вам покажу достаточно хорошее решение, которое подойдет для небольших проектов.
Модуль
Однако будьте осторожнее,
Меня достаточно часто спрашивают о том, как можно быстро сохранить что-либо без использования полноценных баз данных. И сейчас я вам покажу достаточно хорошее решение, которое подойдет для небольших проектов.
Модуль
pickle
реализует двоичное сохранение объектных структур в Python. То есть у вас появляется возможность сохранять переменные для дальнейшего использования даже после перезапуска скрипта. А теперь предлагаю посмотреть подробный пример ниже на картинке.Однако будьте осторожнее,
pickle
не защищен от ошибочных или вредоносных данных. Никогда не извлекайте данные, полученные из ненадежных или не прошедших проверку подлинности источников."Быстрый" контейнер deque
Структура
К тому же, контейнер
Также для
Структура
deque
предпочтительнее, чем обычный список, в тех случаях, когда нам нужны более быстрые операции добавления и вытягивания элементов из обоих концов контейнера.К тому же, контейнер
deque
обеспечивает линейную сложность O(1) для операций добавления и выталкивания по сравнению со стандартным списком, у которого сложность по времени для тех же операций составляет O(n).Также для
deque
есть возможность использовать такие стандартные функции, как sum
, min
, max
и другие.Метод get для словарей
У словарей есть метод
Однако если такого ключа в словаре нет, то исключение не выбрасывается, а возвращается значение по умолчанию, которое передаётся вторым аргументом, или же
В качестве примера создадим словарь с именами, которые можно получить по определенным значениям, и напишем функцию, которая возвращает приветственную фразу со взятием имени из этого словаря.
У словарей есть метод
get
, который возвращает значение по ключу, переданному в аргументах функции. Однако если такого ключа в словаре нет, то исключение не выбрасывается, а возвращается значение по умолчанию, которое передаётся вторым аргументом, или же
None
, если второй аргумент не передан.В качестве примера создадим словарь с именами, которые можно получить по определенным значениям, и напишем функцию, которая возвращает приветственную фразу со взятием имени из этого словаря.
7 фишек Python, максимально улучшающие твой код
Выходные – отличное время для изучения нового материала. В этот раз Святослав подготовил для вас кое-что крайне интересное и уникальное. Приятного прочтения ✌️
Читать 10 минут
Выходные – отличное время для изучения нового материала. В этот раз Святослав подготовил для вас кое-что крайне интересное и уникальное. Приятного прочтения ✌️
Читать 10 минут
Teletype
7 фишек Python максимально улучшающие твой код
В этой статье разбираем фишки, позволяющие по максимуму прокачать твой код.
Форматирование строк
Привет, в этом посте разберем возможные в Python методы форматирования строк. Все примеры использования можете посмотреть на прикрепленной ниже картинке.
Самый древний и уже редко используемый способ – с помощью оператора
В Python 2.6 появился метод
Начиная с версии Python 3.6, доступны f-строки – свежий и наиболее производительный способ форматирования строк.
Привет, в этом посте разберем возможные в Python методы форматирования строк. Все примеры использования можете посмотреть на прикрепленной ниже картинке.
Самый древний и уже редко используемый способ – с помощью оператора
%
. Написание %s
и %d
зависит от того, что мы туда передаем и что хотим увидеть в итоге, но это уже тема отдельного поста.В Python 2.6 появился метод
.format()
с немного отличающимся синтаксисом от существующего оператора %
. К слову, этот метод активно используется и по сей день, в отличии от его предшественника.Начиная с версии Python 3.6, доступны f-строки – свежий и наиболее производительный способ форматирования строк.
Получаем срез из бесконечного генератора
Допустим, мы хотим получить какой-то конечный список элементов из бесконечного генератора. Что нам для этого понадобится?
Для начала создадим сам генератор
Чтобы получить желаемый срез, импортируем модуль
Допустим, мы хотим получить какой-то конечный список элементов из бесконечного генератора. Что нам для этого понадобится?
Для начала создадим сам генератор
fib
, уже немного знакомый вам по посту, где мы использовали lru_cache
, правда там была рекурсивная функция. Этот генератор позволяет (за неимением другого слова) "генерировать" числа из последовательности Фибоначчи.Чтобы получить желаемый срез, импортируем модуль
itertools
, в котором уже есть удобная функция islice
, позволяющая осуществить срез генератора fib.Назначение функций по условию
Наверняка большинство из вас знакомы с тернарным оператором, позволяющим записать простое условное выражение с
Интерпретатор выполняет выражение
Но оказывается, тернарный оператор можно использовать не только для переменных, но и для функций.
Наверняка большинство из вас знакомы с тернарным оператором, позволяющим записать простое условное выражение с
if
:A = Y if X else Z
Интерпретатор выполняет выражение
Y
, если объект X
– True
, и Z
, если X
– False
.Но оказывается, тернарный оператор можно использовать не только для переменных, но и для функций.
Функция map
Привет, крайне часто начинающие программисты изобретают велосипеды при работе с коллекциями. Избежать часть таких ситуаций поможет знание
На вход принимает два обязательных аргмумента: функция-обработчик и итерируемый объект. Суть
Обратите внимание, в примере на картинке мы не пишем скобки у функции
Привет, крайне часто начинающие программисты изобретают велосипеды при работе с коллекциями. Избежать часть таких ситуаций поможет знание
map
.На вход принимает два обязательных аргмумента: функция-обработчик и итерируемый объект. Суть
map
’a заключается в том, что он применяет переданную функцию к каждому элементу последовательности. А возвращает так называемый map-объект, который в дальнейшем можно конвертировать в обычный список и не только. Обратите внимание, в примере на картинке мы не пишем скобки у функции
add_five
при вызове map
– это означает то, что мы передаем объект функции, а не результат её выполнения.Как сделать так, чтобы функция вернула True?
Менять тело функции нельзя. Требуется просто найти такое значение, при котором функция вернёт
Предлагайте свои варианты в нашем чате. А для нетерпеливых прикрепляем ссылку на наш вариант.
Решение задачи
Менять тело функции нельзя. Требуется просто найти такое значение, при котором функция вернёт
True
.Предлагайте свои варианты в нашем чате. А для нетерпеливых прикрепляем ссылку на наш вариант.
Решение задачи
Работа с процессами в Python
С появлением многоядерных процессоров стала общеупотребительной практика распространять нагрузку на все доступные ядра. Существует два основных подхода в распределении нагрузки: использование процессов и потоков. О первом мы как раз сейчас и поговорим.
Читать 6 минут
С появлением многоядерных процессоров стала общеупотребительной практика распространять нагрузку на все доступные ядра. Существует два основных подхода в распределении нагрузки: использование процессов и потоков. О первом мы как раз сейчас и поговорим.
Читать 6 минут
Teletype
Работа с процессами в Python
Начинаем изучать процессы и их реализацию с помощью пакета multiprocessing.
Разница между == и is
Недавно в чате наши подписчики затрагивали эту тему, поэтому мы решили разложить всё по полочкам, чтобы в дальнейшем не возникало вопросов.
Итак, оператор
Однако Python в целях производительности кеширует короткие строки и малые целые числа, поэтому возможны некоторые казусы, как в примере.
Недавно в чате наши подписчики затрагивали эту тему, поэтому мы решили разложить всё по полочкам, чтобы в дальнейшем не возникало вопросов.
Итак, оператор
==
проверяет равенство значений двух объектов. А оператор is
в свою очередь проверяет идентичность самих объектов. Его используют, чтобы удостовериться, что переменные указывают на один и тот же объект в памяти.Однако Python в целях производительности кеширует короткие строки и малые целые числа, поэтому возможны некоторые казусы, как в примере.
Избегайте неоправданных циклов с коллекциями
Предположим, что требуется создать новый список, элементами которого будут являться квадраты чисел данного списка. Большинство сразу же напишут простенький цикл for.
Но в этом и проблема. Такой подход займет как минимум три строчки: объявление новой переменной, создание цикла и инструкции внутри него. При этом также снижается скорость работы скрипта.
На прикрепленной картинке я привел две достойные альтернативы, а именно использование генератора списков и функции
Предположим, что требуется создать новый список, элементами которого будут являться квадраты чисел данного списка. Большинство сразу же напишут простенький цикл for.
Но в этом и проблема. Такой подход займет как минимум три строчки: объявление новой переменной, создание цикла и инструкции внутри него. При этом также снижается скорость работы скрипта.
На прикрепленной картинке я привел две достойные альтернативы, а именно использование генератора списков и функции
map
. В обоих вариантах не только код становится короче и выразительнее, но и заметно повышается производительность.Здоровье программиста
Поскольку именно сейчас, в связи с карантином, все проводят очень много времени за компьютером, мы подготовили несколько рекомендаций для поддержания вашего здоровья.
Читать 7 минут
Поскольку именно сейчас, в связи с карантином, все проводят очень много времени за компьютером, мы подготовили несколько рекомендаций для поддержания вашего здоровья.
Читать 7 минут
Teletype
Здоровье программиста
В этой статье мы приведем несколько рекомендаций для поддержания здоровья программиста
"Быстрый" контейнер deque
Встроенных списков в Python иногда может не хватать, поэтому покажем одну хорошую альтернативу.
Также для
Встроенных списков в Python иногда может не хватать, поэтому покажем одну хорошую альтернативу.
Deque
может быть реализован c помощью модуля collections
. Deque
предпочтительнее, чем обычный список, в тех случаях, когда нам нужны более быстрые операции добавления и вытягивания элементо из обоих концов контейнера, поскольку deque
обеспечивает линейную сложность O(1) для операций добавления и выталкивания по сравнению со списком, у которого сложность по времени для тех операций составляет O(n).Также для
deque
есть возможность использовать стандартные функции по типу sum
, min
, max
и тому подобные.Привет, в ближайшее время мы анонсируем наш новый курс по Python, где будут только продвинутые темы (ООП, декораторы, асинхронность и т. п.). Какая цена вас бы устроила?
Anonymous Poll
44%
500-1000
6%
1000-2000
3%
2000-3000
3%
3000+
42%
Зависит от содержания
1%
Напишу в личные сообщения
Контекстные менеджеры
Контекстные менеджеры позволяют задать поведение при работе с конструкцией
Простейшей функцией, использующей данный принцип является функция
Чтобы каждый раз не вызывать метод
Контекстные менеджеры позволяют задать поведение при работе с конструкцией
with
: при входе и выходе из блока. Это упрощает работу с ресурсами в части их захвата и освобождения; транзакциями, когда нужно либо полностью закончить транзакцию, либо откатить ее целиком. Простейшей функцией, использующей данный принцип является функция
open
. Каждый раз, когда мы открываем файл, нам необходимо его закрыть, чтобы вытолкнуть выходные данные на диск (на самом деле Python вызывает метод close
автоматически, но явное его использование является хорошим тоном). Чтобы каждый раз не вызывать метод
close
мы можем воспользоваться контекстным менеджером функции open
, который автоматически закроет файл после выхода из блока.Вирус локер на Python и Tkinter
Локер – популярный вид вирусов, который блокирует компьютер, и чаще всего злоумышленники просят что-либо взамен на разблокировку. Именно это мы сегодня и будем реализовывать.
Читать 4 минуты
Локер – популярный вид вирусов, который блокирует компьютер, и чаще всего злоумышленники просят что-либо взамен на разблокировку. Именно это мы сегодня и будем реализовывать.
Читать 4 минуты
Teletype
Вирус локер на Python и Tkinter
Реализация популярного вируса в простой форме.
Создаём свой контекстный менеджер
Привет, в четверг на канале вышел небольшой пост про контекстные менеджеры. Сейчас разберём, как их можно реализовать.
В любом контекстном менеджере должны быть определены методы
Метод
А более подробно мы рассказываем про эту тему в нашем курсе по продвинутым темам.
Привет, в четверг на канале вышел небольшой пост про контекстные менеджеры. Сейчас разберём, как их можно реализовать.
В любом контекстном менеджере должны быть определены методы
__enter__
и __exit__
. В качестве примера создадим подобие уже существующего open
.Метод
__enter__
вызывается автоматически и возвращает объект файла. После того, как блок with
заканчивается, также вызывается метод __exit__
, который закрывает файл. А более подробно мы рассказываем про эту тему в нашем курсе по продвинутым темам.
Создание функций на основе других с "замороженными" параметрами
Привет, сегодня поговорим про очень важную функцию
Данная функция принимает в качестве первого аргумента любую другую функцию, а дальше параметры, которые будут автоматически переданы в эту функцию при вызове уже новой функции, которую вернёт
Например, можем создать функцию, которая умножает два числа, а потом "заморозить" один аргумент, как на картинке.
Привет, сегодня поговорим про очень важную функцию
partial
из пакета functools
. Более подробно мы рассказываем про это в курсе, но сейчас дадим краткое описание работы.Данная функция принимает в качестве первого аргумента любую другую функцию, а дальше параметры, которые будут автоматически переданы в эту функцию при вызове уже новой функции, которую вернёт
partial
.Например, можем создать функцию, которая умножает два числа, а потом "заморозить" один аргумент, как на картинке.