Регулярные выражения. Открытие номер 2
Начало тут
Когда впервые познакомился с шаблоном
Ага! С кем-то. Лично я запомнил его как Ларри Уолла, автора языка Perl. Но сейчас, при написании поста не смог найти ту самую древнюю переписку.
Если поделитесь ссылкой в комментариях, респект и уважуха. А пока будем считать это байкой старого айтишника. Садитесь поудобнее 😉
Когда Гвидо добавлял в язык Python регулярные выражения, он конечно же взял их из языка Perl. Почему?
Познавательная минутка 🤓
Perl был создан в 1987 году лингвистом Ларри Уоллом. И изначальная идея - язык для работы с текстом. А куда же тексту без регулярных выражений. Всё логично 🤓
Так вот, Гвидо захотел улучшить регулярки в Python. Он написал Ларри письмо, поинтересовался можно ли занять сочетание символов
После официально разрешения Гвидо использовал связку для расширения регулярок, добавил
Эта идея так понравилась, Ларри, что уже из Python перекочевала в Perl, а потом и в регулярные выражения как таковые.
Кстати, заглавная P в регулярке означает Python. Гвидо застолбил букву для своего языка. Вдруг регулярное выражение не прижилось бы.
Как показывает история,
Спасибо, Гвидо 🖖
Начало тут
Когда впервые познакомился с шаблоном
?P<name> в регулярках, прочитал в сети старую переписку Гвидо с...Ага! С кем-то. Лично я запомнил его как Ларри Уолла, автора языка Perl. Но сейчас, при написании поста не смог найти ту самую древнюю переписку.
Если поделитесь ссылкой в комментариях, респект и уважуха. А пока будем считать это байкой старого айтишника. Садитесь поудобнее 😉
Когда Гвидо добавлял в язык Python регулярные выражения, он конечно же взял их из языка Perl. Почему?
Познавательная минутка 🤓
Perl был создан в 1987 году лингвистом Ларри Уоллом. И изначальная идея - язык для работы с текстом. А куда же тексту без регулярных выражений. Всё логично 🤓
Так вот, Гвидо захотел улучшить регулярки в Python. Он написал Ларри письмо, поинтересовался можно ли занять сочетание символов
?P (вопрос, заглавная P)? И Ларри сказал, что никаких планов на связку ?P у него нет.После официально разрешения Гвидо использовал связку для расширения регулярок, добавил
?P<name>. Теперь он мог обращаться к найденным группам по имени. А заодно и складывать полученные группы в словарь по ключам.Эта идея так понравилась, Ларри, что уже из Python перекочевала в Perl, а потом и в регулярные выражения как таковые.
Кстати, заглавная P в регулярке означает Python. Гвидо застолбил букву для своего языка. Вдруг регулярное выражение не прижилось бы.
Как показывает история,
?P<name> очень прижилось. И оно шикарно облегчает жизнь превращая объемный текст в словарь нужных данных. Спасибо, Гвидо 🖖
👍6🔥2👨💻1
Несколько раз натыкался на вопросы и статьи про запуска кода по расписанию.
Хочет человек запускать свою функцию в 9:30 и 20:45. А ещё он пишет на Python. И начинаются варианты с time.sleep, с asyncio.sleep. Варианты с отдельными потоками или процессами. Кто-то использует сторонние модули, например schedule. Молодцы, ребята, чего уж. Много кодят ради запусков по расписанию 👍
Познавательная минутка 🤓
Запуск программ по расписанию использовался на компьютерах полсотни лет назад. Уже в 1970-х годах была программа (демон) для запуска других программ по расписанию. Вы когда-то слышали про cron? Это он претерпев несколько изменений запускает код по расписанию более 50 лет
Как вы догадались, для запуска когда по расписанию не нужно изобретать сложные Python костыли и велосипеды. Вводим в терминале
Ура! Python файл project будет автоматически запущен дважды в сутки, в 9:30 (строка 1) и в 20:45 (строка 2) 😉
Заметили пустую строку после примера в cron? Как и Python фалы, файл crontab должен заканчиваться пустой строкой. Но в отличии от доброго Python, cron не прощает ошибки. Если пустой строки нет, cron проигнорирует последнюю. Ту, где запуск в 20:45.
P.S. Может ситуацию с последней пустой строкой и пофиксили. Но я за пару десятилетий привык её добавлять. Кому интересно, проверяйте, пишите результат в комментариях✍️
#bash #crontab
Хочет человек запускать свою функцию в 9:30 и 20:45. А ещё он пишет на Python. И начинаются варианты с time.sleep, с asyncio.sleep. Варианты с отдельными потоками или процессами. Кто-то использует сторонние модули, например schedule. Молодцы, ребята, чего уж. Много кодят ради запусков по расписанию 👍
Познавательная минутка 🤓
Запуск программ по расписанию использовался на компьютерах полсотни лет назад. Уже в 1970-х годах была программа (демон) для запуска других программ по расписанию. Вы когда-то слышали про cron? Это он претерпев несколько изменений запускает код по расписанию более 50 лет
Как вы догадались, для запуска когда по расписанию не нужно изобретать сложные Python костыли и велосипеды. Вводим в терминале
crontab -e и добавим пару строк в конец файла:30 9 * * * python /path/to/project.py
45 20 * * * python /path/to/project.py
Ура! Python файл project будет автоматически запущен дважды в сутки, в 9:30 (строка 1) и в 20:45 (строка 2) 😉
Заметили пустую строку после примера в cron? Как и Python фалы, файл crontab должен заканчиваться пустой строкой. Но в отличии от доброго Python, cron не прощает ошибки. Если пустой строки нет, cron проигнорирует последнюю. Ту, где запуск в 20:45.
P.S. Может ситуацию с последней пустой строкой и пофиксили. Но я за пару десятилетий привык её добавлять. Кому интересно, проверяйте, пишите результат в комментариях
#bash #crontab
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥3✍1
И снова делюсь наболевшим. Улыбок вам и быстрых правок багов 💪😉
P.S. Пруфы из официальной документации
#юмор
P.S. Пруфы из официальной документации
#юмор
😁5✍1👍1
Гвидо ван Россум, создатель языка программирования Python, объявил о разработке собственной операционной системы. Отличительной особенностью новой ОС станет уникальная функция под названием GAL — Global Application Lock, позволяющая запускать за раз только одну программу.
«Мы стремимся к простоте и максимальной эффективности», — заявил ван Россум. «Без необходимости переключаться между задачами пользователи смогут полностью сосредоточиться на одной задаче, избежав отвлекающих факторов».
По словам разработчика, ОС будет идеальной для писателей, кодеров и всех, кто хочет уйти от многозадачности.
Скептики шутят, что следующее обновление позволит запускать два окна калькулятора одновременно, но сторонники ван Россума уверены, что новая ОС действительно изменит подход к работе.
#юмор #неновости @notnewsgpt
«Мы стремимся к простоте и максимальной эффективности», — заявил ван Россум. «Без необходимости переключаться между задачами пользователи смогут полностью сосредоточиться на одной задаче, избежав отвлекающих факторов».
По словам разработчика, ОС будет идеальной для писателей, кодеров и всех, кто хочет уйти от многозадачности.
Скептики шутят, что следующее обновление позволит запускать два окна калькулятора одновременно, но сторонники ван Россума уверены, что новая ОС действительно изменит подход к работе.
#юмор #неновости @notnewsgpt
😁4👍2🔥1
This media is not supported in the widget
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Про многозадачность
Недавно возникла задача параллельно выполнять три задачи. Ага, такая вот тавтология.😀 Конечно же потоки сразу были отметены.
- Почему не потоки? - спросите вы.
Потому что с GIL потоки всегда последовательны.
➕ Да, быстро переключаются.
➕ Да, если нет сложных расчётов, ведут себя как параллельные задачи.
➖ При детальном рассмотрении работают последовательно в рамках одного процесса на одном ядре одного процессора.
Не забывайте эту элементарную особенность классического Python.
Познавательная минутка🤓
Для запуска трёх задач в виде процессов использовал модуль subprocess
✍️ - беру на вооружение
🤯 - как это работает?
#многопоточность
Недавно возникла задача параллельно выполнять три задачи. Ага, такая вот тавтология.
- Почему не потоки? - спросите вы.
Потому что с GIL потоки всегда последовательны.
Не забывайте эту элементарную особенность классического Python.
Познавательная минутка
Для запуска трёх задач в виде процессов использовал модуль subprocess
import subprocess
from sys import executable
from os import getcwd
...
python_executable = executable subprocess.Popen([python_executable, 'project_dir/main.py'], cwd=getcwd())
...
✍️ - беру на вооружение
🤯 - как это работает?
#многопоточность
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯8✍7👍1
Коротко об интересном
Недавно столкнулся с задачей выдернуть время из строки текста на русском языке.
Между созданием своего решения с нуля и поиском готового остановился на втором.
Представляю вашему вниманию
Если коротко, то:
✍️ - беру на вооружение
🤯 - как это работает?
#познавательно
Недавно столкнулся с задачей выдернуть время из строки текста на русском языке.
Между созданием своего решения с нуля и поиском готового остановился на втором.
Представляю вашему вниманию
rutimeparser. Если коротко, то:
from rutimeparser import parse
text = "Завтра в 10:10"
date_time = parse(text, tz='Europe/Moscow')
✍️ - беру на вооружение
🤯 - как это работает?
#познавательно
✍4🤯4
Немного воспоминаний от автора канала
В далёком 2007 году я начал интересоваться Linux, особенно Gentoo. За пару дней скомпилировал ядро, модули, X11 и KDE. Всё с флагом -O3. Это означает, что операционная система адаптировалась под мой компьютер и стала быстрее и красивее, чем Windows XP. 🧓
После этого каждую неделю загружал обновления в виде исходного кода и пересобирал части системы. Мне нравилось чувствовать себя опытным линуксоидом, радоваться быстрому компьютеру и настраивать всё под свои нужды.
Сейчас называю таких людей «юными и любознательными». Приятно изучать новое и радоваться своему прогрессу.
Через несколько лет перешёл на CLD (Calculate Linux Desktop), который основан на Gentoo с KDE. Всё необходимое было собрано и скомпилировано за меня. Не только операционная система, но и сотни программ для работы с текстом, изображениями, видео и многим другим устанавливаются с нуля за 20 минут.
С опытом я перешёл к стабильности. Нет смысла устанавливать бета-версии программ, если есть стабильные, но на 1-2 версии ниже. И если сервис был создан 5 лет назад и успешно выполняет свои задачи, не стоит обновлять его.
Работает - не лезь.🤓
👨💻 - юный и любознательный
🎅 - работает - не лезу
#истории
В далёком 2007 году я начал интересоваться Linux, особенно Gentoo. За пару дней скомпилировал ядро, модули, X11 и KDE. Всё с флагом -O3. Это означает, что операционная система адаптировалась под мой компьютер и стала быстрее и красивее, чем Windows XP. 🧓
После этого каждую неделю загружал обновления в виде исходного кода и пересобирал части системы. Мне нравилось чувствовать себя опытным линуксоидом, радоваться быстрому компьютеру и настраивать всё под свои нужды.
Сейчас называю таких людей «юными и любознательными». Приятно изучать новое и радоваться своему прогрессу.
Через несколько лет перешёл на CLD (Calculate Linux Desktop), который основан на Gentoo с KDE. Всё необходимое было собрано и скомпилировано за меня. Не только операционная система, но и сотни программ для работы с текстом, изображениями, видео и многим другим устанавливаются с нуля за 20 минут.
С опытом я перешёл к стабильности. Нет смысла устанавливать бета-версии программ, если есть стабильные, но на 1-2 версии ниже. И если сервис был создан 5 лет назад и успешно выполняет свои задачи, не стоит обновлять его.
Работает - не лезь.
#истории
Please open Telegram to view this post
VIEW IN TELEGRAM
🎅7👍6👨💻3
Новое — это хорошо забытое старое.
👍 - спасибо, что напомнил
✍️ - записал, иду изучать
🤯 - жду подробности в следующем посту
#познавательно
ast.literal_eval
👍 - спасибо, что напомнил
✍️ - записал, иду изучать
🤯 - жду подробности в следующем посту
#познавательно
🤯13👍3✍1
Целую неделю ждал хотя бы 10 реакций 🤯. Не дождался. Этот пост посвящается девятку интересующихся. 🫡
Что же такое ast.literal_eval ? Если просто и коротко, то это функция для превращения строки str в другой питоновский тип данных.
Смотрите пример, чтобы всё понять:
Как видно из примера, функция literal_evel сама подбирает нужный тип для конвертации содержимого строки. Круто!
⚠Внимание!
literal_eval удобно использовать, даже если вы не уверены в данных. Выполнить
Для самых любопытных, напомню.🤓
В Python есть модуль pickle. Он умеет мариновать питоновские типы в виде байт-файла. О нём писал тут и тут.
А ещё в Python есть модуль json. Он тоже умеет превращать строк в данные и наоборот. Про него я тут не писал. 🙃
#познавательно #lifehack
Что же такое ast.literal_eval ? Если просто и коротко, то это функция для превращения строки str в другой питоновский тип данных.
Смотрите пример, чтобы всё понять:
import ast
# Возвращает None
result = ast.literal_eval('None')
print(result) # None
print(type(result)) # <class 'NoneType'>
# Возвращает список
result = ast.literal_eval('[1, 2, 3]')
print(result) # [1, 2, 3]
print(type(result)) # <class 'list'>
# Возвращает словарь
result = ast.literal_eval('{"key": "value"}')
print(result) # {'key': 'value'}
print(type(result)) # <class 'dict'>
Как видно из примера, функция literal_evel сама подбирает нужный тип для конвертации содержимого строки. Круто!
⚠Внимание!
literal_eval удобно использовать, даже если вы не уверены в данных. Выполнить
rm -rf / функция не сможет. Но будьте готовы отлавливать ошибки, если данные не поддаются преобразованию:result = ast.literal_eval('a = 42') # SyntaxError: invalid syntax
result = ast.literal_eval('Hi') # ValueError: malformed node or string on line 1: <ast.Name object at 0x7969dde980>Для самых любопытных, напомню.
В Python есть модуль pickle. Он умеет мариновать питоновские типы в виде байт-файла. О нём писал тут и тут.
А ещё в Python есть модуль json. Он тоже умеет превращать строк в данные и наоборот. Про него я тут не писал. 🙃
#познавательно #lifehack
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍16✍3🔥2❤1🤔1
Столько реакций! Класс! Благодарю всех. 🥰
Сегодня день учителя. Надеюсь этот канал учит вас, даёт новые знания. А ваши вопросы в комментариях зачастую учат админа, заставляют освежить знания, изучить что-то новое.
Все мы учителя и ученики одновременно. Всех нас с праздником, с днём учителя!👨🏫
Сегодня день учителя. Надеюсь этот канал учит вас, даёт новые знания. А ваши вопросы в комментариях зачастую учат админа, заставляют освежить знания, изучить что-то новое.
Все мы учителя и ученики одновременно. Всех нас с праздником, с днём учителя!
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉13👍5👏2🤓1🤗1
Держите капельку знаний для работы с временем в Python. Речь пойдёт о
Решим простую задачу, сколько секунд прошло между двумя датами. Для простоты возьмём сегодняшнее число и время с интервалом в один час.
Вначале у нас всё хорошо.
Из большего значения (более поздней даты) вычитаем меньшее значение. И получаем ожидаемую разницу в один час -
У timedelta есть удобное свойство, seconds. Оно вернуло 3600 секунд.
Познавательная минутка🤓
В одном часе 60 минут.
В одной минуте 60 секунд.
Следовательно в одном часе 60 × 60 = 3600 секунд.
А ещё в сутках 24 часа или 86400 секунд. Эти знания нам пригодятся после второго примера.
А теперь поменяем местами даты.
Ранее мы убедились, что между датами 1 час или 3600 секунд. Но timedelta сообщает о разнице в 82800 секунд.😨
Если присмотреться, timedelta теперь минус один день и плюс 23 часа.
Считаем -1 день = -24 часа.
-24 + 23 = -1 час или -3600 секунд.
Получается, что разница во времени посчитана верно. Но ожидаемы -3600 секунд мы не получили.
Что делать?🤔 Смотреть пример 3.
У объекта timedelta есть метод total_second. Он и вернул ожидаемые -3600 секунд. 🥳
Познавательная минутка🤓
Доступ к свойству объекта осуществляется через точку.
Доступ к методу объекта осуществляется путём вызова метода, через имя и круглые скобки.
Всем отличного времени, какая бы разница у него не была.⏳
✍️ - беру на вооружение
🤯 - как это работает?
#познавательно #python
timedelta - разнице между двумя точками во времени.Решим простую задачу, сколько секунд прошло между двумя датами. Для простоты возьмём сегодняшнее число и время с интервалом в один час.
Вначале у нас всё хорошо.
from datetime import datetime
dt_gt = datetime(2024, 10, 10, 11, 11)
dt_lt = datetime(2024, 10, 10, 10, 11)
td = dt_gt - dt_lt
print(f'<{dt_gt}> - <{dt_lt}> = <{td}>')
print(f'{td.seconds = }')
# Результат
# <2024-10-10 11:11:00> - <2024-10-10 10:11:00> = <1:00:00>
# td.seconds = 3600
Из большего значения (более поздней даты) вычитаем меньшее значение. И получаем ожидаемую разницу в один час -
1:00:00.У timedelta есть удобное свойство, seconds. Оно вернуло 3600 секунд.
Познавательная минутка
В одном часе 60 минут.
В одной минуте 60 секунд.
Следовательно в одном часе 60 × 60 = 3600 секунд.
А ещё в сутках 24 часа или 86400 секунд. Эти знания нам пригодятся после второго примера.
А теперь поменяем местами даты.
from datetime import datetime
dt_gt = datetime(2024, 10, 10, 11, 11)
dt_lt = datetime(2024, 10, 10, 10, 11)
td = dt_lt - dt_gt
print(f'<{dt_lt}> - <{dt_gt}> = <{td}>')
print(f'{td.seconds = }')
# Результат
# <2024-10-10 10:11:00> - <2024-10-10 11:11:00> = <-1 day, 23:00:00>
# td.seconds = 82800
Ранее мы убедились, что между датами 1 час или 3600 секунд. Но timedelta сообщает о разнице в 82800 секунд.
Если присмотреться, timedelta теперь минус один день и плюс 23 часа.
Считаем -1 день = -24 часа.
-24 + 23 = -1 час или -3600 секунд.
Получается, что разница во времени посчитана верно. Но ожидаемы -3600 секунд мы не получили.
Что делать?
from datetime import datetime
dt_gt = datetime(2024, 10, 10, 11, 11)
dt_lt = datetime(2024, 10, 10, 10, 11)
td = dt_lt - dt_gt
print(f'<{dt_lt}> - <{dt_gt}> = <{td}>')
print(f'{td.total_seconds() = }')
# Результат
# <2024-10-10 10:11:00> - <2024-10-10 11:11:00> = <-1 day, 23:00:00>
# td.total_seconds() = -3600.0
У объекта timedelta есть метод total_second. Он и вернул ожидаемые -3600 секунд. 🥳
Познавательная минутка
Доступ к свойству объекта осуществляется через точку.
объект.свойствоДоступ к методу объекта осуществляется путём вызова метода, через имя и круглые скобки.
объект.метод()Всем отличного времени, какая бы разница у него не была.
✍️ - беру на вооружение
🤯 - как это работает?
#познавательно #python
Please open Telegram to view this post
VIEW IN TELEGRAM
✍11👍4🤯1
print(10 / 2) # 5.0
print(10 // 2) # 5
print(10.0 // 2) # 5.0
print(10 // 2.0) # 5.0
print(10.0 // 2.0) # 5.0
#юмор
2👍6✍3😁3🤯1🎃1
Эволюция строки кода
В одном из проектов надо было разделить две переменных нацело. И в первой версии код выглядел как
Проект развивался. И понадобился остаток от деления. Он использовался дальше по коду. Выбор пал на вариант 2, как более короткий:
Любой проект не стоит на месте, эволюционирует. Понадобилось округлять остаток от деления в большую сторону. Но функция divmod так вписалась в проект, что решено было использоватьсякостыль маленькую хитрость с преобразованием типов:
Да и остаток от деления всё так же нужен дальше по коду.😉
Познавательная минутка🤓
Если вам нужно округлить вещественное число до целого в большую сторону, Python рекомендует использовать функцию ceil из модуля math стандартной библиотеки:
✍️ - беру на вооружение
🤯 - как это работает?
#познавательно #lifehack #python3k #python
В одном из проектов надо было разделить две переменных нацело. И в первой версии код выглядел как
частное = делимое // делитель: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
5✍9🤯6👍5
Хэштеги канала в алфавитном порядке. Закрепил.
#алгоритмы
#БД
#видео
#графы
#истории
#многопоточность
#ООП
#познавательно
#структуры_данных
#юмор
#bash
#crontab
#intro
#lifehack
#PEP8
#python
#python3k
#SQLAlchemy
#алгоритмы
#БД
#видео
#графы
#истории
#многопоточность
#ООП
#познавательно
#структуры_данных
#юмор
#bash
#crontab
#intro
#lifehack
#PEP8
#python
#python3k
#SQLAlchemy
👍4🔥1
Маленькая привычка, которая решает большие проблемы
Вы когда-нибудь слышали про флаги?
🏴☠- это пиратский флаг;
🏁 а это финишный флаг;
Познавательная минутка🤓
В программировании флаг - это переменная, которая может принимать только два значения: True или False.
Главная задача флага - показать, что что-то изменилось и что нужно на это отреагировать.
Так что за маленькая привычка из заголовка? Давать переменным-флагам имена, которые начинаются с
- пользователь выиграл -
- письмо отправлено -
- идёт обработка большого массива данных и процесс не должен брать новые задачи. Он занят, он
К таким именам быстро привыкаешь. Скорость написания и отладки кода повышается. А значит появляется время насладиться чашечкой кофе.
✍️ - беру на вооружение
🤯 - как это работает?
👍 - is_thanks
#познавательно #lifehack #python3k #python
Вы когда-нибудь слышали про флаги?
🏴☠- это пиратский флаг;
🏁 а это финишный флаг;
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
👍18✍9🤯2
Минутка ностальгии ☕️
Когда-то давным-давно я открыл для себя Python. Первая установка самой свежей на тот момент версии python3.4 была волнительной. Сколько открытий ждало впереди.👨💻
Сегодня случайно обратил внимание, что поддержка 3.4 закончилась в 2019. Представляете, пять лет назад!😔
Как быстро летит время. Даже боюсь вспоминать Java, который устанавливал на свой первый ПК лет этак 25 назад.🥺
А какие у вас были языки программирования или версии, которые сейчас устарели?😉
P.S. Ни слова про BASIC и Fortran. Они навеки в моём сердце.❤️🔥
Когда-то давным-давно я открыл для себя Python. Первая установка самой свежей на тот момент версии python3.4 была волнительной. Сколько открытий ждало впереди.
Сегодня случайно обратил внимание, что поддержка 3.4 закончилась в 2019. Представляете, пять лет назад!
Как быстро летит время. Даже боюсь вспоминать Java, который устанавливал на свой первый ПК лет этак 25 назад.
А какие у вас были языки программирования или версии, которые сейчас устарели?
P.S. Ни слова про BASIC и Fortran. Они навеки в моём сердце.
Please open Telegram to view this post
VIEW IN TELEGRAM
💔5👍4❤3
Принимаем решение в словаре
Что обычно делают, если надо проверить условие? Конечно же используют конструкцию if.
Типичный пример:
Настолько просто, что в комментариях не нуждается.
А теперь избавимся от конструкции if else. Для этого перенесём логику принятия решения в словарь:
Как вам такая версия? Если раньше не пользовался, выглядит непривычно. Но может среди читателей есть те, кто готов поделится своими более крутыми версиями переноса логики в словарь? Пишите в комментариях.
✍️ - беру на вооружение
🤯 - как это работает?
🎄 - с Новым годом и Рождеством
#познавательно #lifehack #python3k #python
Что обычно делают, если надо проверить условие? Конечно же используют конструкцию 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
2✍16🎄8🤯7🔥2🤬1🏆1
Использование символа подчёркивания
Обратил внимание, что новички, которые только познакомились с переменной
Хорошо: Использование
Символ подчёркивания
Здесь переменная
Познавательная минутка🤓
Символ
Плохо: Использование
Если же символ
Этот плохой код, потому что переменная
Использование символа подчёркивания
✍️ - беру на вооружение
🤯 - как это работает?
👍 -
#познавательно #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👍6❤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✍2😁1
Media is too big
VIEW IN TELEGRAM
👍4❤1⚡1🔥1