Python академия
7.67K subscribers
2.42K photos
5 videos
271 links
Python академия. Учи Python быстро и легко. По всем вопросам @evgenycarter
Download Telegram
Имитация

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

Подписывайтесь на канал 👉@pythonofff
👍21
🚫👩‍💻 🚫 Как не нужно писать на Python

Приглашаем на открытый урок.

🗓 27 октября в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса
«Python Developer. Professional».

Даже опытные разработчики порой создают код, который работает — но жить с ним потом невозможно. На открытом уроке разберём типичные ошибки и антипаттерны в Python, поговорим о причинах появления «плохого» кода и способах сделать его понятнее, стабильнее и быстрее. Рассмотрим как распространённые, так и неожиданные примеры, которые помогут взглянуть на привычные решения под новым углом.

На вебинаре разберём:
✔️ Основные антипаттерны и неудачные практики в Python-разработке
✔️ Почему появляются «плохие» решения и как их вовремя распознать
✔️ Подходы и инструменты, которые помогают улучшить качество кода

В результате вебинара вы:
✔️Поймёте, чего стоит избегать при написании кода на Python
✔️Научитесь видеть и исправлять проблемные участки в своих проектах
✔️Узнаете, как писать читаемый, поддерживаемый и эффективный код

🔗 Ссылка на регистрацию: https://vk.cc/cQyCrI

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
Ключевое слово nonlocal

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

Поведение nonlocal заключается в том, что интерпретатор ищет переменную в ближайшей области видимости.

Основное различие с global в том, что с помощью nonlocal нельзя получить переменные из глобальной области видимости.

Подписывайтесь на канал 👉@pythonofff
👍31
Управление тем, что может быть импортировано из модуля, а что — нет

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

Подписывайтесь на канал 👉@pythonofff
👍2
Создаем словарь из набора ключей

Для создания словаря из известного набора ключей и одинаковых значений часто используют генераторы словарей (dict comprehensions).

Однако класс dict имеет удобный метод fromkeys, который был создан специально для таких случаев.

Подписывайтесь на канал 👉@pythonofff
👍2
Экономия памяти с помощью slots

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

Подписывайтесь на канал 👉@pythonofff
👍31
Пакеты

Пакет — это, грубо говоря, папка с Python модулями. Помимо разделения проекта по частям, пакеты нужны для создания пространства имен, чтобы работать с модулями через точку, как в примере на картинке.

При импорте from package import * будут подключены либо все модули и объекты модуля __init__.py, либо то, что находится в переменной __all__ в том же модуле __init__.py.

Еще примечателен файл __init__.py, который раньше был обязателен для создания пакетов. Но с версии Python 3.3 его необходимость пропала. Однако его функциональность на этом не заканчиваются.

Подписывайтесь на канал 👉@pythonofff
4👍2
Оператор объединения словарей

В Python есть много разных способов объединить несколько словарей. Мне, например, больше всего нравилась распаковка словарей в один новый.

Но в одном из последних обновлений добавили специальный оператор |, с помощью которого можно это делать ещё проще.

Подписывайтесь на канал 👉@pythonofff
👍2
Итерация по Списку в Python С Помощью Метода Enumerate

Если вы не знаете, что именно enumerate делает в python, то позвольте мне объяснить вам.Метод enumerate() добавляет счетчик к итерируемому объекту и возвращает его. И что бы ни возвращал метод enumerate, это будет объект enumerate.

Основное преимущество использования метода enumerate заключается в том, что вы можете преобразовать объекты enumerate в list и tuple с помощью методов list() и tuple() соответственно.

Подписывайтесь на канал 👉@pythonofff
👍2
Please open Telegram to view this post
VIEW IN TELEGRAM
💩2🤣1
Вызов программ операционной системы

sh — это полноценный интерфейс, как альтернатива subprocess, который позволяет вызывать любую программу, как если бы это была обычная функция.
Все запускаемые команды импортируются, как обычные функции, но функциями не являются, а лишь динамически обращаются к командам системы. Таким образом мы можем по сути обратиться к любой программе в системе.

sh полагается на системные вызовы Unix и работает только в Unix-подобных операционных системах, т.е. данный модуль не подойдет для работы с Windows.
Для обращения к командам программы и передать набор аргументов команды, мы можем передать их как обычные аргументы функции.

Также в модуле реализована функция which, которая находит полный путь до программы либо возвращает None, если программа не найдена.

Подписывайтесь на канал 👉@pythonofff
👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
​​Находим схожие строки

В стандартной библиотеке Python существует модуль difflib, в котором есть интересный метод get_close_matches. Он позволяет найти в списке строки, похожие на некую исходную.

Этот метод ищет "наилучшие" возможные совпадения. Первый аргумент задаёт искомую строку, второй аргумент — список, в котором выполняется поиск.

Также в метод можно передать необязательный аргумент n, который задаёт максимальное число возвращаемых совпадений.

Подписывайтесь на канал 👉@pythonofff
👍4