ch
Feedback
Python академия

Python академия

前往频道在 Telegram

Учи Python быстро и легко. Ежедневно публикуем практические задачи, разборы, готовые решения, объяснения логики, советы по алгоритмам. ✔ Подходит для прокачки навыков кодирования. По всем вопросам @evgenycarter

显示更多
7 288
订阅者
无数据24 小时
-17
-3930
帖子存档
Пакеты Пакет — это, грубо говоря, папка с Python модулями. Помимо разделения проекта по частям, пакеты нужны для создания про
Пакеты Пакет — это, грубо говоря, папка с Python модулями. Помимо разделения проекта по частям, пакеты нужны для создания пространства имен, чтобы работать с модулями через точку, как в примере на картинке. При импорте from package import * будут подключены либо все модули и объекты модуля __init__.py, либо то, что находится в переменной __all__ в том же модуле __init__.py. Еще примечателен файл __init__.py, который раньше был обязателен для создания пакетов. Но с версии Python 3.3 его необходимость пропала. Однако его функциональность на этом не заканчиваются. Подписывайтесь на канал 👉@pythonofff

Экономия памяти с помощью slots Эта функция хорошо сказывается на производительности, но, с точки зрения потребления памяти,
Экономия памяти с помощью slots Эта функция хорошо сказывается на производительности, но, с точки зрения потребления памяти, это неэффективно. Обычно, правда, проблем эта особенность не вызывает. Однако если вы столкнулись в подобной ситуации с нехваткой памяти — можете попробовать воспользоваться атрибутом slots Подписывайтесь на канал 👉@pythonofff

Создаем словарь из набора ключей Для создания словаря из известного набора ключей и одинаковых значений часто используют гене
Создаем словарь из набора ключей Для создания словаря из известного набора ключей и одинаковых значений часто используют генераторы словарей (dict comprehensions). Однако класс dict имеет удобный метод fromkeys, который был создан специально для таких случаев. Подписывайтесь на канал 👉@pythonofff

Управление тем, что может быть импортировано из модуля, а что — нет В некоторых языках имеются предельно чёткие механизмы экс
Управление тем, что может быть импортировано из модуля, а что — нет В некоторых языках имеются предельно чёткие механизмы экспорта из модулей переменных, методов, интерфейсов. Например — в Golang экспортируются лишь сущности, имена которых начинаются с большой буквы. В Python же экспортируется всё. Но лишь до тех пор, пока не используется атрибут all Подписывайтесь на канал 👉@pythonofff

Ключевое слово nonlocal Похожее по функционалу на global, ключевое слово nonlocal позволяет обращаться к переменным из нелока
Ключевое слово nonlocal Похожее по функционалу на global, ключевое слово nonlocal позволяет обращаться к переменным из нелокальной области видимости. Поведение nonlocal заключается в том, что интерпретатор ищет переменную в ближайшей области видимости. Основное различие с global в том, что с помощью nonlocal нельзя получить переменные из глобальной области видимости. Подписывайтесь на канал 👉@pythonofff

Имитация В вышеприведённом примере экспортирована будет лишь функция bar. А если оставить атрибут all пустым, то из модуля не
Имитация В вышеприведённом примере экспортирована будет лишь функция bar. А если оставить атрибут all пустым, то из модуля не будет экспортироваться вообще ничего. При попытке импорта чего-либо из такого модуля будет выдана ошибка AttributeError. Подписывайтесь на канал 👉@pythonofff

Ключевое слово global Изначально мы не можем изменять значение переменной в другой области видимости, но мы можем это сделать
Ключевое слово global Изначально мы не можем изменять значение переменной в другой области видимости, но мы можем это сделать, переопределив область видимости на глобальную, с помощью ключевого слова global. Мы даже можем определить новую глобальную переменную внутри функции, но не нужно этим злоупотреблять, т.к. это будет засорять глобальную область и приводить к нежелательным ошибкам Подписывайтесь на канал 👉@pythonofff

Операторы сравнения Существует немало операторов сравнения. Например — lt, le, gt, ge. Мало кому понравится перспектива их ре
Операторы сравнения Существует немало операторов сравнения. Например — lt, le, gt, ge. Мало кому понравится перспектива их реализации для некоего класса. Можно ли как-то упростить эту скучную задачу? Да, можно — с помощь декоратора functools.total_ordering Подписывайтесь на канал 👉@pythonofff

Нижнее подчеркивание В Python имя переменной может состоять из одного подчеркивания. Хотя такое имя не достаточно описательно
Нижнее подчеркивание В Python имя переменной может состоять из одного подчеркивания. Хотя такое имя не достаточно описательно и не должно использоваться, есть по крайней мере три случая, когда _ имеет общепринятый смысл. Первое, _ используется, когда вам нужно придумать имена для значений, которые вам не нужны — например, в циклах for. Второе, интерактивный режим использует _ для хранения результата последнего выполненного выражения. Третье, документация модуля gettext рекомендует псевдоним _() для функции gettext(), чтобы минимизировать загромождение вашего кода. Подписывайтесь на канал 👉@pythonofff

Упрощение создания операторов сравнения Декоратор functools.total_ordering используется здесь для упрощения процесса реализац
Упрощение создания операторов сравнения Декоратор functools.total_ordering используется здесь для упрощения процесса реализации упорядочения экземпляров класса. Для обеспечения его работы нужно лишь чтобы были объявлены операторы сравнения lt и eq. Это — тот минимум, который нужен декоратору для конструирования остальных операторов сравнения. Подписывайтесь на канал 👉@pythonofff

Хэширование Для создания хэш-значений в python существует удобный модуль hashlib, реализующий общий интерфейс для ряда популя
Хэширование Для создания хэш-значений в python существует удобный модуль hashlib, реализующий общий интерфейс для ряда популярных хэш функций и также может использовать функции доступные в системе, предоставляемые с установленным OpenSSL. Использование очень простое, в модуле существует ряд конструкторов, соответствующих названиям хэш-функций. В конструктор мы можем передать байт-строку, хэш которой мы хотим получить, на выходе мы получим объект хэша. Объект хэша мы можем обновить методом update, сконкатенировав тем самым строки, а также можем можем вывести полученное значение с помощью методов digest и hexdigest. Первый возвращает байт-строку, второй - в шестнадцатеричном формате. Подписывайтесь на канал 👉@pythonofff

Функции reversed() Важно! Не путайте функцию reversed() с методом .reverse()! Встроенная функция reversed() меняет порядок эл
Функции reversed() Важно! Не путайте функцию reversed() с методом .reverse()! Встроенная функция reversed() меняет порядок элементов списка на противоположный и позволяет нам обращаться к каждому элементу по отдельности. Подписывайтесь на канал 👉@pythonofff

Корутины Некой противоположностью генераторов являются корутины. Для примера напишем функцию, которая будет в бесконечном цик
Корутины Некой противоположностью генераторов являются корутины. Для примера напишем функцию, которая будет в бесконечном цикле подставлять значение и выводить строку. Обратите внимание на то, как было использовано ключевое слово yield. При таком написании создаётся не генератор, а корутина, что позволяет не просто генерировать значения, но и принимать их. Функция работает так: при отправке значения через метод send локальная переменная name принимает его, а далее значение подставляется в строку и выводится на экран. Подписывайтесь на канал 👉@pythonofff

Как перевернуть список в Python с помощью функции reversed() Функция reversed() принимает список в качестве аргумента и возвр
Как перевернуть список в Python с помощью функции reversed() Функция reversed() принимает список в качестве аргумента и возвращает нам исходные элементы, только в обратном порядке. Если вы хотите сохранить возвращаемое значение из функции reversed() для дальнейшего использования, то нужно преобразовать результат в список с помощью функции list(). Далее необходимо присвоить получившееся выражение переменной, в нашем случае my_new_list. Подписывайтесь на канал 👉@pythonofff

Генераторы Функции-генераторы выглядят как и обычные, но вместо return содержат выражения с ключевым словом yield для последо
Генераторы Функции-генераторы выглядят как и обычные, но вместо return содержат выражения с ключевым словом yield для последовательного генерирования значений. Вызов подобной функции вернёт не значение, а объект генератора. Далее из этого объекта можно получать значения, например, с помощью функции next или циклом for. Если генератору больше нечего возвращать, то будет вызвано исключение StopIteration. В целом, генератор — это особый, более изящный случай итератора. Подписывайтесь на канал 👉@pythonofff

Использование метода float() Если входная строка имеет аргументы за пределами диапазона чисел с плавающей запятой, вы получит
Использование метода float() Если входная строка имеет аргументы за пределами диапазона чисел с плавающей запятой, вы получите ошибку OverflowError. Для реализации следующих скриптов на Python установите сам Python, а также подходящую IDE (Pycharm, Jupiter, Spyder и т.д.). Создайте новый файл, вставьте туда код и запустите его. Подписывайтесь на канал 👉@pythonofff

Определение литеральных типов Когда нам может понадобится определить из полученной строки литеральный тип (строки, числа, спи
Определение литеральных типов Когда нам может понадобится определить из полученной строки литеральный тип (строки, числа, списки, кортежи, словари, логические значения и None), мы можем воспользоваться функцией literal_eval() из модуля ast. Данная функция поможет безопасно определить литеральный тип, а в случае если был передан не литерал, то выбросит исключение. Это можно использовать для оценки выражений из внешних источников при парсинге файлов, либо пользовательского ввода. Подписывайтесь на канал 👉@pythonofff

Получение срезов итераторов Воспользовавшись методом itertools.islice можно создать объект islice, который представляет собой
Получение срезов итераторов Воспользовавшись методом itertools.islice можно создать объект islice, который представляет собой итератор, выдающий нужные элементы. Однако здесь важно отметить то, что эта конструкция использует все элементы генератора вплоть до начала среза и все элементы в объекте islice. Подписывайтесь на канал 👉@pythonofff

3 трюка с itertools Начнем с функции combinations: она позволяет составлять комбинации элементов из итерируемых объектов без
3 трюка с itertools Начнем с функции combinations: она позволяет составлять комбинации элементов из итерируемых объектов без повторений. Первый аргумент это сам объект, а второй — длина комбинации. Для того, чтобы составить комбинацию с повторениями, используют функцию combinations_with_replacement. Делает она абсолютно все то же самое что и предыдущая, с одним исключением – теперь в комбинации могут быть повторы. Ну и в заключение, рассмотрим функцию compress, применяющую "маску" из второго аргумента функции к первому. То есть, если в маске на этом месте стоит единица, то в исходном массиве элемент остается нетронутым, и наоборот. Подписывайтесь на канал 👉@pythonofff

Итерируемые объекты Иногда нужно работать с файлом, который, как заранее известно, начинается с некоторого числа ненужных стр
Итерируемые объекты Иногда нужно работать с файлом, который, как заранее известно, начинается с некоторого числа ненужных строк — вроде строк с комментариями. Для того чтобы пропустить эти строки, можно, снова, прибегнуть к возможностям itertools Подписывайтесь на канал 👉@pythonofff