Разъяснивший Python
8.48K subscribers
2.24K photos
37 videos
30 files
2.07K links
Твой проводник в омут Python'а

Ссылка: @Portal_v_IT

Сотрудничество: @oleginc, @tatiana_inc

Канал на бирже: https://telega.in/c/python_pssss
Download Telegram
Я знаю что так будет, но почему?

Во первых вспоминаем, что значения по умолчанию генерируются только один раз и хранятся в func.__defaults__.

Во вторых, вспоминаем про булевые операции, что они могут возвращать не только True/False, а и сами значения.

#объяснение
Принцип DRY

Don't repeat yourself («не повторяйся») — этот принцип означает, что стоит избегать дублирования кода или данных.

Внесение изменений в такой код становится в разы сложнее. Что если вы забыли добавить фичу в другом файле? Этот вопрос не даст вам покоя.

Следование принципу приводит проект к модульной архитектуре с чётким разделением между бизнес-логикой и программными классами.

#принцип #dry
Про метод str.split(sep)

Все знают, что он разделяет строку по sep, но у него есть свои особенности. И первое, это если sep не указан, то есть None.

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

Если sep передан, то разделители не группируются, а значит на месте повторов образуется ''. Также, разделение пустой строки всегда вернёт [''].

#объяснение
Принцип YAGNI

Вам это не нужно. Не добавляйте кнопку, если вас об этом не просили. Не убивайте всё время на супер быстрый движок, если вас об этом не просили.

Инициатива это хорошо, но из-за неё может уйти больше времени на разработку. К тому же, каждая функция должна оплачиваться и, чаще всего, из кошелька клиента.

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

#принцип
📓 Python 3. Самое необходимое.

• Описан базовый синтаксис языка Python 3: типы данных, операторы, условия, циклы, регулярные выражения, встроенные функции, объектно-ориентированное программирование, обработка исключений, часто используемые модули стандартной библиотеки и установка дополнительных модулей. Даны основы SQLite, описан интерфейс доступа к базам данных SQLite и MySQL, в том числе посредством ODBC. Рассмотрена работа с изображениями с помощью библиотек Pillow и Wand, получение данных из Интернета и использование архивов различных форматов.

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

#RU
Менять списки во время итерации плохая идея, и вот почему:

С помощью итератора мы можем пройтись по элементам списка, так давайте напишем свой итератор и посмотрим, что там происходит внутри.

Как мы видим, поскольку удалили 1 из списка, все элементы сместились влево и на второй позиции уже будет не двойка а тройка.

Её тоже удаляем и получаем [2, 4]. Поскольку дальше двигаться некуда, итератор останавливает свою работу.

#объяснение
⚡️ Учим Python с GitHub

python-guide — проект-документация по языку, от новичка до профи. Качать его не обязательно, ведь есть и веб версия.

TheAlgorithms — репозиторий с огромным количеством реализованных алгоритмов, структур данных

python-patterns — набор шаблонов проектирования, написанных на Python. Здесь нет ConcreteObserver2 и подобного, все шаблоны разобраны на реальных примерах.

#миниурок
⚡️ Упрощаем поиск багов

Функция поиска площади квадрата со стороной 5 должна возвращать 25. А если не вернёт? Самый быстрый способ это проверять — использовать assert.

Если оператор получает на первый аргумент False, то выводит AssertionError с текстом из второго аргумента (если таков имеется).

Чтобы убрать проверку, добавьте флаг -O при запуске приложения: python3 -O foo.py. Подробнее в документации.

#теория
com.foobnix.pro.pdf.reader_4000.apk
48.3 MB
🧩 Librera Reader.
Читалка книг

Librera Reader - это гибко настраиваемое и многофункциональное приложение для чтения книг на Android устройствах,
которое поддерживает множество форматов: PDF, EPUB, MOBI, DjVu, FB2, TXT, RTF, AZW, AZW3, HTML, CBZ, CBR.
Обладая интуитивно понятным и удобным интерфейсом, Librera поможет вам получить настоящее удовольствие от чтения книги.

• Для большей безопасности Librera Reader для F-Droid использует MuPDF 1.16.1 и не требует разрешения Интернет.

https://f-droid.org/ru/packages/com.foobnix.pro.pdf.reader/

#Librera #SOFT
Что?

Буквы сортируются не в алфавитном порядке, а по позиции в таблице UTF-16, получить значение которого можно с помощью ord(x).

В верхнем регистре символы имеют меньшее значение, чем в нижнем, поэтому они оказались в начале списка.

#объяснение
⚡️ Context Manager

Помните про with? Там рассказывалось про его использование с классами, но ничто не мешает использовать его с функциями. Только нужна библиотека contextlib.

Чтобы функция могла работать с with, вы добавляете @contextmanager или @asynccontextmanager, в зависимости от того, нужно ли вам асинхронное выполнение.

Только ещё вам нужно yield, чтобы вернуть объект, с которым будет работать with и при этом только приостановить работу функции. Подробнее.

#миниурок #contextlib
⚡️ Создаём интерфейс командной строки

Если вы пишите консольное приложение, то обязаны позаботиться о том, чтобы пользователям было удобно им пользоваться. CLI вам поможет создать fire.

Установка: pip install fire

Модуль придерживается ООПшного стиля, что сильно упрощает интеграцию к себе в проект.

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

#миниурок #fire
Как определить истинный этот объект или нет?

Многие знают, что в Python всё можно перевести в bool. Пустые последовательности и коллекции ('', [], (), {}, range(0)), None и 0 возвращают False. Остальное — True.

Но как это просчитывается? Вызывается __bool__() метод, который возвращает True/False. Если его нет, используется __len__(). Если метод вернёт 0, то результат будет False.

Если ни одна из функций не определена, то объекты считаются True.

#объяснение
Media is too big
VIEW IN TELEGRAM
Python для начинающих

В этом видеоуроке автор разбирает язык Python для начинающих. Этот урок поможет сформировать базовое представление о программировании и самом языке. Его можно использовать как начальное пособие и после переходить к более глубокому изучению.

00:00 Вступление
00:41 Установка Python и Pycharm
04:57 Консольные ввод и вывод
08:56 Переменные
18:22 Операторы
25:30 Условный оператор
30:55 Работа со списками
36:16 Работа с словарями
42:34 Цикл while
46:13 Цикл for
51:22 Функции

Смотреть это видео на youtube: youtu.be/ZY-uCwE8u9k
Любопытно

round(x) округляет значения до ближайшего чётного числа (в документации так и написано). В википедии можно даже найти такое правило.

Если вам нужно, чтобы 2.5 округлялось до трёх, то посмотрите в сторону decimal с настройкой ctx.rounding = ROUND_HALF_UP. Подробнее.

#объяснение
🎙 Голосовой ассистент на Python

Хочешь управлять компьютером с помощью голоса?

В детстве смотря фантастические фильмы мечтал создать программу с помощью которой мог бы управлять компьютером с помощью голоса. В данном видео пошагово пишем голосового помощника на языке Python c помощью библиотек speech recognition и pyaudio.

https://www.youtube.com/watch?v=ZZVWae8E9K0
Любопытно

round(x) округляет значения до ближайшего чётного числа (в документации так и написано). В википедии можно даже найти такое правило.

Если вам нужно, чтобы 2.5 округлялось до трёх, то посмотрите в сторону decimal с настройкой ctx.rounding = ROUND_HALF_UP. Подробнее.

#объяснение
🔥 Pydantic

Работали с JSON? Значит вы явно знакомы с болью, когда превращаешь строку в объект. Нужно писать кучу проверок, переводить в определённый тип, что-то делать с датами?

Все проблемы с типизацией решает Pydantic. Что модуль умеет и как им пользоваться рассказывает автор ролика.

Смотреть | #видео
Строки на несколько строк

Бывают ситуации, когда строку лучше разделить, чтобы она легче читалась, но при этом сохранить её содержимое в полном порядке. В таком случае у нас есть три варианта:

· Использовать косую черту (/). Тогда мы переносим выражение на новую строку и ни о чем не заботимся.

· Использовать скобки. Смотрите лучше пример. Никаких + использовать не надо, строки сами объединяться.

· Использовать тройные кавычки. Внутри тройных кавычек все останется именно таким, как оно есть.

#теория