#python python... PYTHON 🔛 🚀
11 subscribers
914 photos
7 videos
158 files
1.54K links
Download Telegram
Forwarded from Simulative
⚙️ Зачем нужны конфиги в Python и как работать с ними правильно?

Конфиги - необходимый атрибут в любом проекте, хотя некоторые программисты недооценивают их важность. С помощью конфигов удобно хранить данные доступов, прописывать пути до папок/логов и т.д.

Ок, то что конфиги нужны - вопросов нет. Но как с ними лучше работать? Существует большое количество мнений по этому поводу, но мы в своих проектах привыкли пользоваться .ini-файлами и библиотекой configparser. Такой подход снимает кучу головной боли - один раз мы прописываем все в конфиге и на все оставшееся время вообще забываем про него.

Кстати, совет: если над проектом работает сразу несколько человек, то можно добавить конфиг в gitignore, чтобы у каждого была своя локальная копия с нужными настройками. Тогда конфиг не будет перезатираться при каждом git pull.

А как у вас обстоят дела с конфигами? Используете их или по-старинке храните все прямо в коде?)
Forwarded from Python School
Преобразуем список в словарь при помощи генератора словаря (ч.1)

Для преобразования списка Python в словарь также можно использовать генератор словаря.

Генератор словаря похож на генератор списка в том, что оба они создают новое значение соответствующего типа данных.

Что касается синтаксиса, в генераторе словаря используются фигурные скобки {}, а в генераторе списка — квадратные [ ].
Forwarded from Python School
Преобразуем список в словарь при помощи генератора словаря (ч.2)

Для начала мы объявили список фруктов (fruits), где хранятся их названия, которые мы хотим перенести в словарь.

Затем мы использовали генератор словаря, чтобы пройтись по каждому элементу в списке fruits. Для каждого фрукта в нашем списке мы добавили элемент в новый словарь. При этом каждому фрукту мы присвоили значение In stock.
Forwarded from Python School
ASCII-текст

По умолчанию json.dump проверяет, имеет ли ваш текст в словаре кодировку ASCII. Если присутствуют символы, отличные от ASCII, они автоматически экранируются.

Но это не всегда приемлемо. Во многих случаях вы бы хотели сохранить символы Unicode нетронутыми.
Forwarded from Python Academy
Сопоставление шаблонов в python 3.10

Уже сегодня, 4-го октября, должна выйти в релиз версия Python 3.10, но пока этого еще не произошло)

Одной из добавленных фишек стала конструкция сопоставления с шаблоном match/case по аналогии с конструкцией switch/case из других языков. Для тех, кто вообще не понимает о чем речь, switch/case - это конструкция, позволяющая определить различное поведение в зависимости от значения передаваемого паттерна.

В с++ допускается проверка только целочисленных типов и перечислений, в java, с#, go... также помимо этого еще возможно использовать в switch/case строки.

В python решили не ограничиваться данной функциональностью и добавить возможность работать с любыми типами. Помимо этого мы можем добавлять в шаблоны альтернативу, перечисляя все возможные значения через оператор | (или), а также работать с более сложными вложенными шаблонами и накладывать однострочные условия на шаблон.

#switch #match
Forwarded from Python Academy
Создание словаря из набора ключей

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

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

#словари #fromkeys
Forwarded from Python School
Процесс делегирования в Python (ч.2)

В примере показан класс, охватывающий поведение файла и преобразующий данные из нижнего в верхний регистр

Метод write() в классе upcase конвертирует строку из нижнего в верхний регистр до вызова другого метода. Собственно сама делегация осуществляется за счет использования объекта self._out.
Forwarded from Python Academy
Сопоставление шаблонов в python 3.10

Уже сегодня, 4-го октября, должна выйти в релиз версия Python 3.10, но пока этого еще не произошло)

Одной из добавленных фишек стала конструкция сопоставления с шаблоном match/case по аналогии с конструкцией switch/case из других языков. Для тех, кто вообще не понимает о чем речь, switch/case - это конструкция, позволяющая определить различное поведение в зависимости от значения передаваемого паттерна.

В с++ допускается проверка только целочисленных типов и перечислений, в java, с#, go... также помимо этого еще возможно использовать в switch/case строки.

В python решили не ограничиваться данной функциональностью и добавить возможность работать с любыми типами. Помимо этого мы можем добавлять в шаблоны альтернативу, перечисляя все возможные значения через оператор | (или), а также работать с более сложными вложенными шаблонами и накладывать однострочные условия на шаблон.

#switch #match
Forwarded from Python Academy
Специальная переменная __name__

Когда интерпретатор Python читает файл, то сначала он устанавливает несколько специальных переменных (пример). Одной из таких переменных является __name__.

Если скрипт был запущен напрямую, то в переменную присваивается значение __main__, в случае импорта — название модуля.

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

Вообще атрибут __name__ по умолчанию также ставится всем классам и функциям.

#переменные
Forwarded from Python Academy
Дизассемблирование

При запуске программы на python, написанный код преобразуется в байт-код, который затем может быть запущен в интерпретаторе Python. Встроенный модуль dis позволяет дизассемблировать байт-код в удобное представление для просмотра его инструкций. Полный спсиок инструкций байт-кода с описанием можно посмотреть в доке модуля.

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

#модули #байткод
Forwarded from Python Academy
Шаблоны строк для форматирования

Класс Template из пакета string в стандартной библиотеке позволяет вполне удобно создавать шаблоны строк для дальнейшего форматирования.

Такой способ появился ещё в Python 2.4, как замена %-форматированию, но популярным так и не стал. Он поддерживает передачу значений по имени и использует $-синтаксис как в PHP.

В новых проектах, конечно, используются чаще всего f-строки и иногда метод format, но всё же о Template стоит хотя бы знать на случай, если придется работать с легаси кодом.

#строки
Forwarded from Python Academy
Всем привет!

25-26 ноября в Москве состоится крупнейшая в Европе IT-конференция HighLoad++ 2021.

🔥В программе — более 130 докладов, каждый из которых решает конкретную задачу. Но конференция — это не только доклады.

На HighLoad++ 2021 вы легко сможете пообщаться с ТОПами IT-индустрии и найти ответы на свои вопросы. А хотите получить персональную консультацию от разработчиков технологий, на которых построен ваш проект? Приходите! Что ещё? Узнаете, как устроены Тинькоф, Яндекс, ВКонтакте, МТС, Mail.ru, Avito и другие крупные проекты.

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

Приходите на HighLoad++ 2021! 25-26 ноября, Москва.
👉 https://www.highload.ru/moscow/2021?utm_source=python_academy&utm_medium=tg&utm_term=2021-10-08
Forwarded from Python Academy
Копируем объекты

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

Если использовать функцию copy из стандартной библиотеки, то новый объект будет создан, но его ссылки на другие объекты останутся такими же.

В случае с deepcopy произойдет рекурсивное копирование. Например, при таком копировании списка все его элементы также скопируются как новые объекты.

#copy
Forwarded from Python Community
⚡️ Интерактивный интерпретатор IPython. Часть 2

IPython
— гораздо более удобный интерпретатор для шелла Python. О нём и его особенностях мы рассказывали ранее. В этот раз поговорим о его командах:

Знак вопроса (?) после переменной выдаст информацию о ней. Тип, несколько данных относительно объекта и строку документации.

%pip — запускает pip из интерпретатора и выполняет переданные команды.

%run — запускает python файл. Принимает аргументы, расписанные тут.

%autocall — задаёт режим запуска команды. При значении 0 будет выводить функцию как строку, а при 2 — запускать команду с значениями по умолчанию.

Подробнее все команды можно изучить здесь.

#миниурок #IPython
Forwarded from Python School
Именованные кортежи, как альтернативы классам в Python.

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

Для понимания:
Именованные кортежи определяют имена для каждой позиции в кортеже и позволяют создавать более читаемый и понятный код. Они могут быть использованы в тех же случаях, что и обычные кортежи, а обращаться к полям можно не только по индексу, но и по имени.