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

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

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

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

РКН: clck.ru/3G6pBb
加入频道
Форматирование многострочного вывода

Если вы хотите, чтобы вывод напоминал табличку с одинаковым отступом, то при использовании F-строк добавьте интерполируемой переменной двоеточие и число, одинаковое для всех print(), например, 10. Это «резервирует» пространство из 10 символов
Файлы (ч.1)

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

Гуглите и используйте аббревиатуры. К примеру, датафрейм о пациентах, прошедший Предварительную обработку данных (Exploratory Data Analysis) и выгруженный в файл, можно назвать ‘patients_eda.csv’.
Файлы (ч.2)

Пишите в README пояснения к скриптам. Документация репозитория выручит, если придумать хорошее название не удастся.
Столбцы таблиц и столбцов (ч.1)

По умолчанию именуйте столбцы по-английски. Большая часть библиотек сегодня поддерживает обращение через квадратные скобки (для случаев, когда в названии не латиница). Но если название станет аргументом, передаваемым через командную строку, то придётся запоминать, как именно передавать кириллицу.
Столбцы таблиц и столбцов (ч.2)

Если решили именовать столбец по-русски, старайтесь использовать небольшое название (до 20 символов): такое при многократном обращении к столбцу не потребуется долго набирать.
Функции

В название функции часто добавляются сказуемое (глагол или причастие). Однако в моей практике для разграничения похожих функций удобнее приписывать еще и дополнение.
Логические блоки

• Используйте один уровень отступа для каждого нового блока кода (циклы, условия, функции и так далее).
• Избегайте хардкод-чисел. Заменяйте числа в коде на именованные константы.
Частичное совпадение пользовательского ввода

Эта замечательная фича позволяет справляться с ситуациями, когда пользователь вводит не все, что от него ожидается. Фишка работает в версиях Python не ниже 3.10.
Переменные (ч.1)

Но переменных много, правил именования — тоже. И базовая программа не охватывает всё.

Используйте аббревиатуры. Так выглядит переменная, содержащая идентификатор пользователя Telegram.
Backend-разработчики, расчищайте график на 13, 14 апреля. Авито проводит Weekend Offer! Нанимаем без привязки к языку программирования.

Мы предлагаем:

✔️прокачку навыков Go - и PHP-разработки;
✔️платформенные и продуктовые команды;
✔️комьюнити из 1000+ инженеров для обмена опытом;
✔️работу с микросервисной архитектурой, автоматизацией поддержки и другими ведущими проектами компании;

Подавайте заявку до 11 апреля и приходите на интервью.
Переменные (ч.2)

Оставляйте неизменными названия переменных, которые устоялись в документации. Порой проще дописать комментарий об объекте и найти подсказку в Stack Overflow, чем получить понятное название, содержимое которого спустя месяц не отладить.
try / except + else + finally

Мастхэв для начинающих питонистов — пара try / except, обработчик исключений. Шикарным дополнением к такому блоку является, на мой взгляд, else: он опишет поведение программы на случай других ошибок, которых может быть немало!

Более того, добавив finally, вы выполните завершающие работы, например, скомандуете выслать уведомление
Splat-оператор

Splat (одна звездочка) расширяет коллекцию до позиционных аргументов, а splatty-splat (две звездочки) — словарь до именованных аргументов.
Оператор ==

== проверяет, равны ли значения двух операндов. В данном контексте — переменных, занимающих разные ячейки памяти. 

Этот оператор можно использовать для сравнения практически любых объектов: строк, списков, словарей и кортежей. Это делает его очень частым «гостем» в инструкциях if-else. К тому же, когда через неделю свой код воспринимать становится сложнее, всего два символа в операторе упрощают чтение длиной в сотни строк. 
Оператор is()

is() проверяет, являются ли два операнда одним и тем же объектом, то есть указывают ли они на один и тот же объект в памяти.
Перечисления (Enumeration)

Используйте enumerate() для перебора списка как с индексом, так и со значением. Это элегантный способ отслеживать индекс того или иного элемента, не просто его значение.
Генераторы списков (List Comprehension)

Для создания нового списка, где к каждому элементу применена функция. Это обеспечивает читаемость и отрабатывается компилятором быстрее.
Переменные (ч.3)

Опускайте гласные в существительных. В рунете этой практике только предстоит устояться. А зря. Даже частичное опущение подойдет.
Лямбда-функции (Lambda Functions)

Создавайте небольшие анонимные функции с ключевым словом lambda. Лямбды просто созданы для того, чтобы их использовали в функциях высшего порядка в качестве аргумента. Это, безусловно, позволяет добиться более короткого кода.
Множественное назначение (Multiple Assignment)

Назначьте несколько переменных в одной строке, используя распаковку кортежа. Это невероятно удобный способ разложить любой сложный объект на независимые переменные. 
Извлечение части списка (Slicing)

Используйте извлечение части списка – слайсинг с указанием индексов начального и конечного элементов. Вместо того, чтобы создавать копию my_list, в примере ниже мы напрямую обращаемся к этому объекту. Это рациональное расходование памяти, и на больших объемах данных вы точно оцените эту фичу.