Python tricks | Хитрости Питона
5.8K subscribers
2.21K photos
26 videos
1 file
2.52K links
Здесь вы найдете лучшие практики и приёмы, которые используют опытные программисты.

Сотрудничество: @SIeep_Token

Мы на платформе: https://telegram.me/python_tricks

Ссылка на канал: https://t.me/+QayZf6ccsQllZTYy
Download Telegram
Рандомные координаты

Про комикс, который вызывается с помощью import antigravity слышали все (если  вы его не видели, то ловите). Но если покопаться, можно найти пасхалку в пасхалке: в модуле antigravity.py  можно найти функцию geohash, которая открывает другой комикс и генерирует случайные координаты.

🔗 Python tricks
Шифр Цезаря

Модуль this.py, который выводит Zen of Python, выглядит так.

Строка s зашифрована с помощью ROT13 — все буквы сдвинуты на 13 позиций. Кстати, так же иногда скрывают спойлеры, что многих бесит.

🔗 Python tricks
string.lower

Метод lower() преобразует все символы верхнего регистра в строке в символы нижнего регистра. Если символы верхнего регистра отсутствуют, возвращается исходная строка. Для преобразования строки в верхний регистр используй upper().

🔗 Python tricks
Классика: Zen of Python от Тима Питерса

Zen of Python — 19 принципов программирования на Python, написанные разработчиком Тимом Питерсом. И единственная «пасхалка», которую официально указали в Руководстве.

🔗 Python tricks
Мысли о любви

В дополнение к тому, каким должен быть код, Python любит порассуждать и о любви (и рассказать что любовь — это любовь, а что-то там еще).

🔗 Python tricks
set.isdisjoint

Метод isdisjoint() возвращает значение True, если два множества не имеют между собой общих элементов. В противном случае возвращается False. Ты также можешь передавать итерации, такие как список, кортеж, словарь или строку. В этом случае isdisjoint() сначала преобразует итерации в множества. Затем происходит проверка, не являются ли они непересекающимися.

🔗 Python tricks
Дядя Барри

1 первого апреля 2009 года Гвидо ван Россум заявил, что уходит в отставку, чтобы сосредоточиться на покорении Эвереста, и теперь официально значится как Benevolent Dictator Emeritus Vacationing Indefinitely from the Language (BDEVIL) — или Великодушный почетный диктатор, отдыхающий от языка в течение неопределенного срока. На его место якобы пришел Барри Уорсоу (или Дядя Барри). И тут же ввел несколько изменений и обругал Python 3.0 и Си.

Все это оказалось первоапрельской шуткой, отголоски которой все еще можно найти в интерпретаторе.

🔗 Python tricks
Хэши

Хеш — фиксированное целое число, идентифицирующее конкретную величину. Можно ли найти хеш бесконечности или NaN? В Python да.

🔗 Python tricks
Типы не для слабонервных

Если проверить справку для types.CodeType, то можно узнать, что на эту тему думает создатель языка.

🔗 Python tricks
Превращение списка в одну строку

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

Но есть более быстрый и эффективный способ выполнения той же задачи с помощью одной строки кода.

🔗 Python tricks
Get Method для словаря

Большинство разработчиков используют скобки, чтобы получить значение из словаря. Но сейчас рекомендуется использовать Get method.

При использовании метода скобок выдается ошибка, если ключ отсутствует. С помощью Get method вы получите “None” .

🔗 Python tricks
string.swapcase

Метод swapcase() возвращает строку, преобразуя все символы в противоположный регистр (прописные буквы в строчные и наоборот). Для преобразования строки в нижний регистр используй метод lower(). Аналогично, если для преобразования строки в верхний регистр используй upper().

🔗 Python tricks
Никаких фигурных скобок

В Python, в отличие от, например, C, C ++ или Java используются отступы вместо фигурных скобок. И даже если попытаться импортировать их, можно увидеть это.

🔗 Python tricks
Целых 4 отсылки на Монти Пайтон

Гвидо ван Россум любит это шоу, и даже в документации указал, что: «Язык назван в честь шоу Би-би-си “Летающий цирк Монти Пайтона” и не имеет никакого отношения к рептилиям. Ссылки на скетчи Монти Пайтон в документации не только разрешены, но и поощряются!». Так что неудивительно, что в самом языке есть несколько отсылок к шоу.

🔗 Python tricks
Конвертер валюты

С помощью этого небольшого кода ты можешь реализовать конвертер валюты. Пользователь сам вводит сумму и валюту. Предварительно нужно установить библиотеку forex-python.

from forex_python.converter import CurrencyRates

c = CurrencyRates()

amount = float(input("Введите сумму: "))
from_currency = input("Введите исходную валюту: ").upper()
to_currency = input("Введите желаемую валюту для конвертации: ").upper()

result = c.convert(from_currency, to_currency, amount)
print(f"{amount} {from_currency} равно {result} {to_currency}")


🔗 Python tricks
Можно и нужно использовать try — except
KeyError

Если при чтении файла метод json.loads() возвращает вместо словаря список, то при попытке обратиться к ключу message можно схватить такое исключение.

Эту ошибку легко допустить, когда не знаешь тип возвращаемого объекта.

Представьте, что мы выгружаем логи бота по дням, а в выходные не случилось ни одной беседы. Тогда программа вернет объект None («ничего») про воскресенье, и у него тоже нет ключа ‘message’. Здесь try — except играет важную роль: навесив такой блок, мы обработаем ситуацию с пустотами.

🔗 Python tricks
IndexError

Допустим, мы и дальше получаем список реплик бота, причем каждый день длина этого перечня разная. Если все же приходится при создании цикла опираться на некую константу, которая с количеством реплик не всегда совпадает, try — except поможет справиться с ошибкой индекса.

Указываем во второй части конструкции, с какой ошибкой может столкнуться скрипт.

🔗 Python tricks
⁉️ Готов стать профи в разработке на Python?- или будешь довольствоваться средним уровнем?

Всего за 5 месяцев можно освоить широкий стек технологий на онлайн-курсе «Python Developer. Professional» и вырасти в доходе и должности. 

➡️  Пройди тест по Python и проверь свои знания.

Ответишь — пройдешь на продвинутый курс "Python Developer. Professional" от OTUS по специальной цене 

🔥 Выбери светлую сторону силы и приходи на курс.
TypeError + ValueError

Если вы, скажем, планируете оперировать тем, что ввел пользователь, то input() может сыграть с вами злую шутку.

По умолчанию метод возвращает строку, а мы-то предполагаем целочисленное значение.

try, в принципе, может справиться с такой ситуацией, если вы понимаете типы данных для проводимых операций (в данном случае, сложения).

🔗 Python tricks
Бонусный прием

В PEP 654 были объявлены группы исключений (Exception Groups): они позволяют заложить в одну строку except сразу несколько типов ошибок.

Если исследовать типы ошибок нет времени, можно на скорую руку заложить в такую группу все популярные ошибки и обернуть блоком try — except всю программу.

🔗 Python tricks