TGViewer
Channel Public Channel
Cool and Fun Python

Cool and Fun Python

@python3k

Крутой и весёлый Python. Случаи из практики и не только.
Subscribers
510
Photos
30
Videos
8
Links
39
Recent Posts 20 shown
Post #146 472
Магические числа

Нравится волшебство? А вот и зря. Магические числа - антипаттерн в программировании.

Вместо того, чтобы делать срез до -38, надо явно сказать что это за число.
STANDART_SUFFIX = -38
text = "Очень много текста. Прям очень. И он весь нужен для кода. Стандартное завершение любого текста."
useful_data = text[0:STANDART_SUFFIX]


Тут должен начаться спор. Может быть хранить в константе положительное число, а в срезе указывать константу с минусом?
Но мы не будем ругаться. Мы пойдём дальше. И сразу код:
without_suffix_slice = slice(0, -38)
text = "Очень много текста. Прям очень. И он весь нужен для кода. Стандартное завершение любого текста."
useful_data = text[without_suffix_slice]


Что тут произошло?
Одна из стандартных функций slice многими забыта и не используется от слова совсем. С помощью неё создали срез-заготовку. И он поможет нам избежать магических чисел и добавить понятности в то, что именно мы вырезаем из текста.

✍️ - беру на вооружение
🤯 - как это работает?
👨‍💻 - вся моя магия внутри ИИ

#python3k #lifehack
Python3k Python3kMax
  • ✍ 8
  • 🤯 2
  • 👨‍💻 1
Post #145 441
Про ОС

Оказывается мысли о том, что у программиста должен быть MacBook, а код надо писать под Linux, живы в умах юных (не по возрасту, в по опыту) айтишников до сих пор.

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

Познавательная минутка 🤓
Python код работает одинаково на любой операционной системе. У каждой ОС есть свой интерпретатор Python. И он преобразует один и тот же код в понятные для своей ОС команды.

Минутка занудства 🤓
На самом деле есть некоторые низкоуровневые Python библиотеки и модули, которые используют разное написание Python кода для разных ОС.
Но новичку там нечего делать. А опытный разработчик достаточно опытен, чтобы понять разницу.

А какие ОС используете вы? Пишите в комментариях.

🤓 - Windows
🤩 - MacOS
😎 - Linux
👨‍💻 - Другая ОС

#python3k
Python3k Python3kMax
  • 🤓 12
  • 😎 9
  • 🤩 5
  • 👨‍💻 2
Post #144 419
Кто-нибудь пользовался новой удалённой отладкой в Python 3.14?
Поделитесь своим опытом в комментария.

👨‍💻- пользовался pdb
🤷‍♂️ - что за зверь?
  • 🤷‍♂ 9
  • 👨‍💻 1
Post #143 480
Redis хорош, но...

Ничего не имею против хранения данный в ОЗУ при помощи Redis. Быстрый доступ, копия на диске, очереди и прочие плюшки.

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

Всем спасибо, я высказался и восстанавливаюсь от постигшего меня шока.

✍️ - беру на вооружение
🤯 - как это работает?
👨‍💻 - мы не ищем лёгкий путей

#python3k #lifehack
Python3k Python3kMax
  • 👨‍💻 6
  • ✍ 3
  • 💯 2
  • 🤯 1
  • 👀 1
Post #142 481
В продолжение идеи про словарь функций
Начало тут

def handle_negative():
print("Обработка отрицательных значений")
...


def handle_zero():
print("Обработка нуля")
...


def handle_positive_less_than_ten():
print("Обработка положительных чисел меньше десяти")
...


def handle_greater_or_equal_to_ten():
print("Обработка чисел больше или равных десяти")
...


condition_func_map = {
lambda x: x < 0: handle_negative,
lambda x: x == 0: handle_zero,
lambda x: 0 < x < 10: handle_positive_less_than_ten,
lambda x: x >= 10: handle_greater_or_equal_to_ten
}


def process_data(data):
for condition, handler in condition_func_map.items():
if condition(data):
return handler()


Так можно не просто сравнивать data с фиксированными значениями. Теперь это if-elif-else внутри ключей словаря.

Познавательная минутка 🤓

lambda функция в Python является анонимной. Это значит, что перед lambda не ставят знак равно.
my_func = lambda x: x ** 2
Такой код считается плохим тоном в Python
☝️

В словаре функций lambda становится ключём словаря, но без присваивания переменной. Она (lambda) остаётся анонимной, Гвидо доволен, коллеги делятся печеньками.


✍️ - беру на вооружение
🤯 - как это работает?
👨‍💻 - дедлайн, айтишник торжествует

#python3k #lifehack
Python3k
  • ✍ 5
  • 🤯 3
  • 👨‍💻 1
Post #141 381
Альтернатива if-elif-else / match-case из далёкого прошлого

Этот приём я узнал лет пять назад.

Ага! Пять. На календарь посмотри, star-пёр. 2026 на дворе. Ты этот приём узнал лет 15-20 назад. 🤓

Итак, есть большой, просто огромный if.
if data == "one":
# много строк кода
...
elif data == "two":
# ещё больше строк кода
...
elif data = "three"
# кода меньше не становится
...
else:
# тут не очень много кода, строк 15-20
...


Что делать, когда один if-elif-else занимает сотни строк кода? 🤔
Самый простой и логичный вариант - перенести логику в функции.
def func_one():
# много строк кода, но в отдельной функции
...


def func_two():
# ещё больше строк кода, но в функции не так страшно
...


def func_three():
# кода меньше не становится, но визуально он разбит на более мелки блоки
...


def func_else():
# тут не очень много кода
...


if data == "one":
func_one()
elif data == "two":
func_two()
elif data == "three"
func_three()
else:
func_else()


Как видите, код поделился на отдельные блоки-функции, а полотно if-elif-else стало компактным.

Эй! Хватит полотен. Переходи к своему секретному приёму. 🤓

Итак, секрет в словаре.
Ключ - значение, с которым сравниваем data.
Значение - функция-обработчик. И конечно же функцию в словарь передаём, а не вызываем.
def func_one():
...


def func_two():
...


def func_three():
...


def func_else():
...


funcs = {
"one": func_one,
"two": func_two,
"three": func_three,
}

func = funcs.get(data, func_else)
func()


Теперь мы совершенно избавились от if-elif-else. Вместо него словарь funcs со всеми вариантами ветлвелния.
Вместо вызова у нас метод .get(data). В него же помещаем ветку else.

Кстати, две последние строки можно записать в одну, вот так:
funcs.get(data, func_else)()


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

#python3k #lifehack
Python3k
  • ✍ 13
  • 🎄 9
  • 🤯 6
Post #140 380
  • 🤔 2
  • 🤯 2
  • 😱 1
Post #139 666
Всем, кто отмечает 100000000 день в году, с праздником. С круглым числом.

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

#python #python3k
Python3k
  • ⚡ 6
  • ❤‍🔥 5
  • 👨‍💻 2
  • ❤ 1
  • 👍 1
Post #138 729
Забавный факт

Вполне ожидаемо, что 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
Post #137 705
Post #134 822
Всех с праздником! Ура! 🎉

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

print(my_dict)

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

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

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

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


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

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


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

#пасхалка #познавательно #python3k #python
  • 🤯 7
  • 🍾 6
  • ✍ 4
  • 🕊 1
Post #133 835
Всем отличной удалёнки. Или офиса с ништяками. 😉😂
  • ❤ 6
  • 😁 5
  • 🔥 3
  • 💯 2
  • 👍 1
  • 👨‍💻 1
Post #131 758
Любовь, смерть и роботы
0:08:27
#видео
  • 👍 5
  • ❤ 1
  • ⚡ 1
  • 🔥 1
Post #130 820
Всех с днём юмора

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

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

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

from Monty import Python


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

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

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

#юмор #пасхалка #python3k #python
  • 👍 5
  • ✍ 3
  • 🤯 3
  • 😁 1
Post #129 663
Использование символа подчёркивания _ в циклах 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
  • ✍ 13
  • 👍 7
  • ❤ 1
  • 🤯 1
  • 🤣 1
  • 🏆 1
Post #128 661
Принимаем решение в словаре

Что обычно делают, если надо проверить условие? Конечно же используют конструкцию 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
  • ✍ 16
  • 🎄 8
  • 🤯 7
  • 🔥 2
  • 🤬 1
  • 🏆 1
Post #127 627
Минутка ностальгии ☕️

Когда-то давным-давно я открыл для себя Python. Первая установка самой свежей на тот момент версии python3.4 была волнительной. Сколько открытий ждало впереди. 👨‍💻

Сегодня случайно обратил внимание, что поддержка 3.4 закончилась в 2019. Представляете, пять лет назад! 😔

Как быстро летит время. Даже боюсь вспоминать Java, который устанавливал на свой первый ПК лет этак 25 назад. 🥺

А какие у вас были языки программирования или версии, которые сейчас устарели? 😉

P.S. Ни слова про BASIC и Fortran. Они навеки в моём сердце. ❤️‍🔥
  • 💔 5
  • 👍 4
  • ❤ 3
Post #126 597
Маленькая привычка, которая решает большие проблемы

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

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

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

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

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

#познавательно #lifehack #python3k #python
  • 👍 18
  • ✍ 9
  • 🤯 2
Post #124 512
Хэштеги канала в алфавитном порядке. Закрепил.

#алгоритмы
#БД
#видео
#графы
#истории
#многопоточность
#ООП
#познавательно
#структуры_данных
#юмор
#bash
#crontab
#intro
#lifehack
#PEP8
#python
#python3k
#SQLAlchemy

Python3k Python3kMax
  • 👍 4
  • 🔥 1
Older posts →

About this channel

How can I read @python3k without a Telegram account?
TGViewer shows the public web preview Telegram publishes for Cool and Fun Python: recent posts, photos, videos and the subscriber count, with no app, login or account.
How many subscribers does Cool and Fun Python have?
Cool and Fun Python (@python3k) has 510 subscribers on Telegram, refreshed roughly every 30 minutes.
Does Cool and Fun Python know I viewed it here?
No. Public channel previews carry no viewer identity, and TGViewer has no accounts or tracking of what you look up.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →