Python School
82.3K subscribers
2.4K photos
7 videos
571 links
Уроки по Python, которые упростят вам жизнь. Без идиотских туториалов.

Наши мемы для программистов: @conhum

Сотрудничество - @alivian

Канал сотрудничает с рекламным сервисом @Tgpodbor_official

РКН: clck.ru/3G6pBb
加入频道
Сколько может хранить переменных функция?

Python использует 2 байта для хранения локальных переменных в функциях. Теоретически это означает, что в функции может быть определено только 65536 переменных. Однако в python встроено удобное решение, которое можно использовать для хранения более 2 ^ 16 имен переменных. Следующий код демонстрирует, что происходит в стеке, когда определено более 65536 локальных переменных (Внимание: этот код печатает около 2 ^ 18 строк текста, так что будьте готовы!)
Print

Иногда print метод может выводить значения не сразу.

Это выведет wtfpython через 3 секунды из-за end аргумента, потому что выходной буфер очищается либо после обнаружения, \n либо когда программа завершает выполнение. Мы можем принудительно очистить буфер, передав flush=True аргумент.
Count

'abc'.count('') == 4. Вот приблизительная реализация count метода, которая сделала бы вещи более понятными.

Такое поведение обусловлено сопоставлением пустой подстроки ('') с фрагментами длины 0 в исходной строке.
generator expressions

Попробуем использовать генераторные выражения (для получения среза будем использовать функцию islice из itertools, которая возвращает итератор по срезу)
generator functions

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

Генераторной фунцией в python называется функция, которая ведет себя как итератор. Для определения генераторной функции нужно использовать ключевое слово yield
Давно хотели попробовать свои силы в программировании? Отлично! Практический мини-курс по Python как раз для тех, кто хочет познакомиться сразу с несколькими направлениями Python-разработки и решить, что нравится больше 😉

Зарегистрируйтесь сейчас, получите гайд по профессии и узнайте, почему Python — идеальный язык для новичка: https://epic.st/88QiC

Много практики не бывает. На мини-курсе вы:
— создадите бота для Telegram, который умеет переводить голос в текст;
— «научите» бота обрабатывать фотографии;
— познакомитесь с парсингом данных;
— напишете сайт с помощью фреймворка Flask — инструмента, который помогает быстро создавать любые проекты: интернет-магазины, социальные сети, образовательные платформы и т. д.

После просмотра видеоматериалов вас ждёт онлайн-встреча со спикером — руководителем направления по исследованию данных в Сбере — Анастасией Борневой. В прямом эфире вы сможете обсудить практические работы и задать вопросы о профессии.

Все участники получат сертификат на скидку 10 000 рублей на любой курс Skillbox и электронную книгу издательства МИФ «Разум под контролем». Ах, да, самое важное — бессрочный доступ! Материалы курса будут доступны вам всегда — сможете вернуться к ним в любое время.

Участвуйте!

Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880
Оператор walrus (:=)

В этом примере мы используем оператор walrus (:=) для одновременного присваивания значения переменной line и проверки условия внутри цикла while. Это позволяет нам сократить код, объединив операции присваивания и проверки в одну строку.
Функция partial

В этом примере мы используем функцию partial для создания новых функций double и triple на основе функции multiply, фиксируя аргумент y на значениях 2 и 3 соответственно. Теперь новые функции могут быть вызваны с одним аргументом, в то время как фиксированный аргумент уже задан.
Модуль asyncio

В этом примере мы используем модуль asyncio для создания асинхронной программы. Определяем асинхронную корутину my_coroutine, которая выполняет асинхронную операцию (в данном случае, ожидание 1 секунды). Затем определяем асинхронную функцию main, которая вызывает две корутины одновременно с помощью asyncio.gather. В конце мы используем asyncio.run для запуска основной функции main.
Контекстные менеджеры (with)

В
этом примере мы используем контекстный менеджер with для автоматического открытия и закрытия файла. В блоке with мы читаем содержимое файла и выводим его на экран. После выхода из блока with файл будет автоматически закрыт, независимо от того, произошло исключение или нет.
Декоратор @property

В этом примере мы определяем класс Circle с атрибутом radius и методом area, который вычисляет площадь окружности. Мы добавляем декоратор @property перед методом area, чтобы можно было обращаться к нему как к свойству объекта circle, без явного вызова метода.
Сортировка HTML-элементов по названию

С помощью метода find_all мы можем сортировать все элементы, которые соответствуют некоторым критериям.
Сортировка HTML-элементов по CSS-селектору

С помощью методов select и select_one мы можем использовать некоторые селекторы CSS для сортировки элементов.
Создания декораторов с помощью декоратора @wraps

В этом примере мы используем модуль functools и декоратор @wraps, чтобы создать декоратор my_decorator. Декоратор @wraps применяется к внутренней функции wrapper и копирует метаданные (имя функции, документацию и др.) из декорируемой функции func. Это полезно, чтобы сохранить исходные атрибуты функции и предотвратить их затирание. В примере мы декорируем функцию my_function с помощью @my_decorator и выполняем ее.
Модуль concurrent.futures для параллельного выполнения задач

В этом примере мы используем модуль concurrent.futures для параллельного выполнения функции square над элементами списка numbers. Мы создаем пул потоков с помощью ThreadPoolExecutor и используем метод map для передачи каждого элемента из списка в функцию square. Результаты возвращаются в том порядке, в котором задачи были отправлены. Аналогично, мы можем использовать пул процессов с помощью ProcessPoolExecutor для выполнения задач в отдельных процессах.
метод remove() - помощь в удаление элемента из списка

Списк состоит из строк и целых чисел. Есть повторяющиеся элементы: строка «Mars» и число 12. Задаём отрезок и с помощью метода remove чистим список.
Метод del

Для удаления элемента из списка можно использовать метод del с названием списка после него. Также потребуется передать индекс того элемента, который нужно удалить.
Enum перечисления

Этот класс можно назвать удобным способом инкапсуляции списка констант, чтобы они не были разбросаны по всему коду без структуры.
Как удалить элемент из списка с помощью индекса в Python

Для удаления элемента по индексу используйте pop(). Для этого также подойдет ключевое слово del.
Базовый синтаксис

Мы можем использовать цикл for для перебора списка, кортежа или строк.
Вывод строки по отдельным символам

Иногда при работе со строками нам нужны отдельные буквы. В таких случаях мы можем использовать цикл for для перебора символов и их печати.