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

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

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

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

РКН: clck.ru/3G6pBb
加入频道
Функции

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

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

Эта замечательная фича позволяет справляться с ситуациями, когда пользователь вводит не все, что от него ожидается. Фишка работает в версиях 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, в примере ниже мы напрямую обращаемся к этому объекту. Это рациональное расходование памяти, и на больших объемах данных вы точно оцените эту фичу.
F-строки (F-strings)

Само олицетворение интерполяции, то есть включения переменных в строковые выводы.
«Моржовый» оператор (Walrus Operator)

:= присвоит значение переменной как части выражения.
Включение (Dictionary Comprehension)

Позволит лаконично сгенерировать словари в сравнении с той же for loop, занимающей как минимум две строки. 
any() и all()

Функции проверят, удовлетворяют ли элементы объекта условию. 

any() принимает итерируемый объект (например, список nums) в качестве аргумента и возвращает True, если хотя бы один элемент в списке считается True. Если все элементы ложные или nums пуст, то any() возвращает значение False.

all() тоже принимает такой объект в качестве аргумента и возвращает значение True, если все элементы в нем считаются истинными, или если итерируемый объект пуст. Если там есть хотя бы один элемент, который считается False, то all() вернет False.
zip()

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