Cool and Fun Python
540 subscribers
30 photos
8 videos
1 file
33 links
Крутой и весёлый Python. Случаи из практики и не только.
Download Telegram
Эволюция строки кода

В одном из проектов надо было разделить две переменных нацело. И в первой версии код выглядел как частное = делимое // делитель:
div = divisible // divisor


Проект развивался. И понадобился остаток от деления. Он использовался дальше по коду. Выбор пал на вариант 2, как более короткий:
# Вариант 1
div = divisible // divisor
mod = divisible % divisor

# Вариант 2
div, mod = divmod(divisible, divisor)


Любой проект не стоит на месте, эволюционирует. Понадобилось округлять остаток от деления в большую сторону. Но функция divmod так вписалась в проект, что решено было использоваться костыль маленькую хитрость с преобразованием типов:
div, mod = divmod(divisible, divisor)
div += int(bool(mod))

Да и остаток от деления всё так же нужен дальше по коду. 😉

Познавательная минутка 🤓
Если
вам нужно округлить вещественное число до целого в большую сторону, Python рекомендует использовать функцию ceil из модуля math стандартной библиотеки:
import math

div = math.ceil(divisible // divisor)


✍️ - беру на вооружение
🤯 - как это работает?

#познавательно #lifehack #python3k #python
Please open Telegram to view this post
VIEW IN TELEGRAM
59🤯6👍5
Маленькая привычка, которая решает большие проблемы

Вы когда-нибудь слышали про флаги?
🏴‍☠- это пиратский флаг;
🏁 а это финишный флаг;
True и False - пара, создающая логический флаг в программе.

Познавательная минутка 🤓
В программировании флаг - это переменная, которая может принимать только два значения: True или False.
Главная задача флага - показать, что что-то изменилось и что нужно на это отреагировать.

Так что за маленькая привычка из заголовка? Давать переменным-флагам имена, которые начинаются с is_:
- пользователь выиграл - is_win
- письмо отправлено - is_send_email
- идёт обработка большого массива данных и процесс не должен брать новые задачи. Он занят, он is_working_now

К таким именам быстро привыкаешь. Скорость написания и отладки кода повышается. А значит появляется время насладиться чашечкой кофе.

✍️ - беру на вооружение
🤯 - как это работает?
👍 - is_thanks

#познавательно #lifehack #python3k #python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍189🤯2
Принимаем решение в словаре

Что обычно делают, если надо проверить условие? Конечно же используют конструкцию if.
Типичный пример:
a = 42
b = 73
if a > b:
print("Первое больше")
else:
print("Первое не больше")


Настолько просто, что в комментариях не нуждается.

А теперь избавимся от конструкции if else. Для этого перенесём логику принятия решения в словарь:
a = 42
b = 73
choice = {
True: "Первое больше",
False: "Первое не больше",
}
print(choice[a > b])


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


✍️ - беру на вооружение
🤯 - как это работает?
🎄 - с Новым годом и Рождеством

#познавательно #lifehack #python3k #python
216🎄8🤯7🔥2🤬1🏆1
Использование символа подчёркивания _ в циклах for: паттерны и антипаттерны

Обратил внимание, что новички, которые только познакомились с переменной _, начинают использовать её где нужно и где не нужно. Рассмотрим два варианта применения символа _ в контексте цикла for.


Хорошо: Использование _ только для управления циклом

Символ подчёркивания _ применяется в качестве имени переменной-итератора, если её значение не требуется явно использовать внутри тела цикла. Это позволяет подчеркнуть, что данная переменная несёт исключительно служебную функцию и не должна участвовать в дальнейшей обработке данных. Например:

data = [1, 2, 3]
for _ in range(len(data)):
print("Повторение без использования значения")

Здесь переменная _ используется только для того, чтобы выполнить определённое количество итераций, но она нигде более не упоминается в теле цикла. Этот подход является общепринятым и считается хорошим стилем программирования, поскольку он ясно показывает намерение разработчика и минимизирует риск случайного изменения или повторного использования переменной.

Познавательная минутка 🤓
Символ _ широко признан в сообществе Python как обозначение "переменной-пустышки".


Плохо: Использование _ внутри цикла

Если же символ _ используется не только для управления циклом, но также задействуется в теле цикла для каких-либо операций, это может привести к путанице и ошибкам. Рассмотрим следующий пример:

data = [10, 20, 30]
total = 0
for _ in data:
total += _
print(total)

Этот плохой код, потому что переменная _ здесь используется и в теле цикла. Такой подход нарушает соглашение об использовании _ . Правильно было бы использовать i или даже item вместо _.

Использование символа подчёркивания _ в циклах for может быть полезным инструментом. Правильное использование улучшает ясность и эффективность кода, тогда как злоупотребление может привести к трудностям в отладке и поддержке программного обеспечения.

✍️ - беру на вооружение
🤯 - как это работает?
👍 - for _ in data:

#познавательно #lifehack #python3k #python
Please open Telegram to view this post
VIEW IN TELEGRAM
112👍61🤯1🤣1🏆1
Всех с днём юмора

Пришло время рассказать о пасхалке в Python, которая привязана к 1 апреля. Да, вы не ослышались. Запускается только когда системное время у вас на 1 апреля.

Познавательная минутка 🤓
Системное время - дата и время на вашем компьютере, ноутбуке, телефоне, сервере.
Современные устройства с доступом в интернет умеют корректировать своё системное время. Телефоны делают это через связь с сотовой вышкой.
В таких устройствах сначала надо выключить синхронизацию. Потом устройство позволит задать любую дату и время.

Хватит томить. К делу:

from Monty import Python


При запуске этого кода вас ждёт... А нет, не расскажу. Сами запускайте и радуйтесь.

Всех с праздником. Улыбок вам. 😁

✍️ - беру на вооружение
🤯 - как это работает?
👍 - с праздником

#юмор #пасхалка #python3k #python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🤯32😁1
Всех с праздником! Ура! 🎉

И держите праздничный фокус.
my_dict = {
1: 'целое',
1.0: 'вещественное',
True: 'логическое',
}

print(my_dict)

Что же лежит внутри словаря, что же выведем на печать? 🤔

Познавательная минутка 🤓
Для хранения пар ключ-значение в словаре Python использует технологию хеширования ключа. Так можно быстро найти значение. Скорость O(1), т.е. быстрее некуда.

Итак, вычисляем хеш от 1 и помещаем первое значение в пустой словарь.
Далее вычисляем хеш для 1.0. Если такого хеша нет, создаём новую пару ключ-значение. А если есть, заменяем значение у существующего ключа.
И наконец вычисляем хеш для True. Если такого хеша нет, создаём новую пару ключ-значение. А если есть, заменяем значение у существующего ключа.

{1: 'логическое'}


Разрыв шаблона для новичка. И вполне обычная ситуация для более опытного питониста. 😉

Пусть эта особенность Python будем самым страшным событием в эти праздник и выходные.


✍️ - беру на вооружение
🤯 - как это работает?
🍾 - с праздником

#пасхалка #познавательно #python3k #python
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯7🍾64🕊1
Забавный факт

Вполне ожидаемо, что defaultdict возвращает значение по умолчанию, если ключ отсутствует в словаре. Но только при поиске через квадратные скобки:

defaultd = defaultdict(default_func)
default_value = defaultd[key]


А что будет, если воспользоваться методом get ?
В этом случае получаем поведение классического словаря dict. Т.е. при обращении к несуществующему ключу вернётся None.

defaultd = defaultdict(default_func)
default_value = defaultd.get(key)

default_value is None



✍️ - беру на вооружение
🤯 - как это работает?
👍 - None is None

#python #python3k
Python3k
4🤯2👍1
Всем, кто отмечает 100000000 день в году, с праздником. С круглым числом.

❤️‍🔥 - обожаю этот день
⚡️ - электрон мне в SSD
👨‍💻 - а у меня проект

#python #python3k
Python3k
Please open Telegram to view this post
VIEW IN TELEGRAM
6❤‍🔥4👨‍💻2👍1