Использование символа подчёркивания
Обратил внимание, что новички, которые только познакомились с переменной
Хорошо: Использование
Символ подчёркивания
Здесь переменная
Познавательная минутка🤓
Символ
Плохо: Использование
Если же символ
Этот плохой код, потому что переменная
Использование символа подчёркивания
✍️ - беру на вооружение
🤯 - как это работает?
👍 -
#познавательно #lifehack #python3k #python
_ в циклах 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
1✍12👍7❤1🤯1🤣1🏆1
Всех с днём юмора
Пришло время рассказать о пасхалке в Python, которая привязана к 1 апреля. Да, вы не ослышались. Запускается только когда системное время у вас на 1 апреля.
Познавательная минутка🤓
Системное время - дата и время на вашем компьютере, ноутбуке, телефоне, сервере.
Современные устройства с доступом в интернет умеют корректировать своё системное время. Телефоны делают это через связь с сотовой вышкой.
В таких устройствах сначала надо выключить синхронизацию. Потом устройство позволит задать любую дату и время.
Хватит томить. К делу:
При запуске этого кода вас ждёт... А нет, не расскажу. Сами запускайте и радуйтесь.
Всех с праздником. Улыбок вам. 😁
✍️ - беру на вооружение
🤯 - как это работает?
👍 - с праздником
#юмор #пасхалка #python3k #python
Пришло время рассказать о пасхалке в Python, которая привязана к 1 апреля. Да, вы не ослышались. Запускается только когда системное время у вас на 1 апреля.
Познавательная минутка
Системное время - дата и время на вашем компьютере, ноутбуке, телефоне, сервере.
Современные устройства с доступом в интернет умеют корректировать своё системное время. Телефоны делают это через связь с сотовой вышкой.
В таких устройствах сначала надо выключить синхронизацию. Потом устройство позволит задать любую дату и время.
Хватит томить. К делу:
from Monty import Python
При запуске этого кода вас ждёт... А нет, не расскажу. Сами запускайте и радуйтесь.
Всех с праздником. Улыбок вам. 😁
✍️ - беру на вооружение
🤯 - как это работает?
👍 - с праздником
#юмор #пасхалка #python3k #python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5✍3🤯3😁1
Media is too big
VIEW IN TELEGRAM
👍4❤1⚡1🔥1
Читаете ли вы старые посты? Которые были написаны до вашего прихода в канал.
Anonymous Poll
18%
Прочитал(а) все
45%
Несколько старых прочитал(а)
27%
Читаю только новое
11%
Не читаю, просто подписался
This media is not supported in your browser
VIEW IN TELEGRAM
Всем отличной удалёнки. Или офиса с ништяками. 😉😂
5❤6😁5🔥3💯2👍1👨💻1
Всех с праздником! Ура! 🎉
И держите праздничный фокус.
Что же лежит внутри словаря, что же выведем на печать?🤔
Познавательная минутка🤓
Для хранения пар ключ-значение в словаре Python использует технологию хеширования ключа. Так можно быстро найти значение. Скорость O(1), т.е. быстрее некуда.
Итак, вычисляем хеш от 1 и помещаем первое значение в пустой словарь.
Далее вычисляем хеш для 1.0. Если такого хеша нет, создаём новую пару ключ-значение. А если есть, заменяем значение у существующего ключа.
И наконец вычисляем хеш для True. Если такого хеша нет, создаём новую пару ключ-значение. А если есть, заменяем значение у существующего ключа.
Разрыв шаблона для новичка. И вполне обычная ситуация для более опытного питониста.😉
Пусть эта особенность Python будем самым страшным событием в эти праздник и выходные.
✍️ - беру на вооружение
🤯 - как это работает?
🍾 - с праздником
#пасхалка #познавательно #python3k #python
И держите праздничный фокус.
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🍾6✍4🕊1
Меня по телеку Телеграм каналу показывают. https://news.1rj.ru/str/zen_of_python/4401
А о чём хотелось бы почитать вам на моём канале?
А о чём хотелось бы почитать вам на моём канале?
Telegram
Zen of Python
Вопрос подписчика
Задает @Python3k:
«Что-бы такое интересно покодить? 🤔»
NB! Пожалуйста, будьте взаимовежливы. Однажды и вам помогут в этой рубрике.
От админа: сейчас вам накидают неоплачиваемой работы 😆
#обсуждение
@zen_of_python
Задает @Python3k:
«Что-бы такое интересно покодить? 🤔»
NB! Пожалуйста, будьте взаимовежливы. Однажды и вам помогут в этой рубрике.
От админа: сейчас вам накидают неоплачиваемой работы 😆
#обсуждение
@zen_of_python
1🔥3❤1👍1👏1
Забавный факт
Вполне ожидаемо, что defaultdict возвращает значение по умолчанию, если ключ отсутствует в словаре. Но только при поиске через квадратные скобки:
А что будет, если воспользоваться методом
В этом случае получаем поведение классического словаря dict. Т.е. при обращении к несуществующему ключу вернётся None.
✍️ - беру на вооружение
🤯 - как это работает?
👍 - None is None
#python #python3k
Python3k
Вполне ожидаемо, что 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
Как часто вы используете match-case в Python?
Anonymous Poll
0%
Только match-case, не использую if-elif-else
8%
В основном if-elif-else, но иногда match-case
4%
Часто match-case и редко if-elif-else
8%
И match-case, и if-elif-else примерно одинаково
12%
Часто if-elif-else и редко match-case
8%
В основном if-elif-else, но иногда match-case
62%
Только if-elif-else, не использую match-case
🤯2🤔1😱1
Альтернатива if-elif-else / match-case из далёкого прошлого
Этот приём я узнал лет пять назад.
Ага! Пять. На календарь посмотри, star-пёр. 2026 на дворе. Ты этот приём узнал лет 15-20 назад.🤓
Итак, есть большой, просто огромный if.
Что делать, когда один if-elif-else занимает сотни строк кода?🤔
Самый простой и логичный вариант - перенести логику в функции.
Как видите, код поделился на отдельные блоки-функции, а полотно if-elif-else стало компактным.
Эй! Хватит полотен. Переходи к своему секретному приёму.🤓
Итак, секрет в словаре.
Ключ - значение, с которым сравниваем data.
Значение - функция-обработчик. И конечно же функцию в словарь передаём, а не вызываем.
Теперь мы совершенно избавились от if-elif-else. Вместо него словарь funcs со всеми вариантами ветлвелния.
Вместо вызова у нас метод
Кстати, две последние строки можно записать в одну, вот так:
✍️ - беру на вооружение
🤯 - как это работает?
🎄 - неужели праздники всё?
#python3k #lifehack
Python3k
Этот приём я узнал лет пять назад.
Ага! Пять. На календарь посмотри, 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
Please open Telegram to view this post
VIEW IN TELEGRAM
✍11🎄9🤯6
В продолжение идеи про словарь функций
Начало тут
Так можно не просто сравнивать
Познавательная минутка🤓
lambda функция в Python является анонимной. Это значит, что перед lambda не ставят знак равно.
Такой код считается плохим тоном в Python☝️
В словаре функций lambda становится ключём словаря, но без присваивания переменной. Она (lambda) остаётся анонимной, Гвидо доволен, коллеги делятся печеньками.
✍️ - беру на вооружение
🤯 - как это работает?
👨💻 - дедлайн, айтишник торжествует
#python3k #lifehack
Python3k
Начало тут
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
Please open Telegram to view this post
VIEW IN TELEGRAM
✍5🤯3👨💻1
Redis хорош, но...
Ничего не имею против хранения данный в ОЗУ при помощи Redis. Быстрый доступ, копия на диске, очереди и прочие плюшки.
Но что же вы иногда творите, коллеги?😱
Если программе нужен набор ключ-значение и этот набор не выходит за пределы вашего однопроцессного однопоточного приложения, используйте словарь.
Всем спасибо, я высказался и восстанавливаюсь от постигшего меня шока.
✍️ - беру на вооружение
🤯 - как это работает?
👨💻 - мы не ищем лёгкий путей
#python3k #lifehack
Python3k
Ничего не имею против хранения данный в ОЗУ при помощи Redis. Быстрый доступ, копия на диске, очереди и прочие плюшки.
Но что же вы иногда творите, коллеги?
Если программе нужен набор ключ-значение и этот набор не выходит за пределы вашего однопроцессного однопоточного приложения, используйте словарь.
Всем спасибо, я высказался и восстанавливаюсь от постигшего меня шока.
✍️ - беру на вооружение
🤯 - как это работает?
👨💻 - мы не ищем лёгкий путей
#python3k #lifehack
Python3k
Please open Telegram to view this post
VIEW IN TELEGRAM
👨💻6✍2💯2🤯1👀1