The Pythonic Way
357 subscribers
12 photos
22 links
Айтишка через призму практикующего Python-инженера.

Правда об IT, будни разработчика, полезные фишки Python и его инструментов.
Download Telegram
Нотация О-большое или же Big O notation 📊

Наверное многие из вас слышали о такой штуке, как О-большое. Но что это такое и где используется? Давайте разберемся.

Что такое O-большое?

О-большое — это способ оценки скорости роста количества операций, которые выполняются в алгоритме, когда размер входных данных увеличивается. Это помогает понять, насколько быстро будет работать алгоритм с ростом данных.

Зачем оно нужно?

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

Как оно обозначается?

О-большое записывается как O(f(n)), где f(n)— это функция, описывающая скорость роста операций в алгоритме. Например, O(n) означает, что количество операций растет линейно с увеличением данных.

Примеры

O(1): Константное время. Количество операций не меняется с ростом данных.
Пример: доступ к элементу массива по индексу.
O(n): Линейное время. Количество операций растет пропорционально размеру данных.
Пример: перебор всех элементов в массиве.
O(n²): Квадратичное время. Количество операций растет квадратично с размером данных.
Пример: вложенные циклы, проверяющие каждую пару элементов.
O(log n): Логарифмическое время. Количество операций растет медленно при увеличении размера данных.
Пример: бинарный поиск в отсортированном массиве.

O-большое - это способ понять, насколько быстро будет работать алгоритм по мере роста данных. Оно помогает программистам выбирать наилучшие алгоритмы для разных ситуаций, учитывая их эффективность.

Кстати, почитать об О-большом и алгоритмах в принципе можно в классной книге "Грокаем алгоритмы". Автор понятным языком рассказывает о достаточно сложных вещах. А еще, в книге присутствует множество классных иллюстраций, которые упростят понимание и углубление в алгоритмы. В общем, самое то для того, чтобы вкатиться в тему 🤩

P.S. А вы тоже заметили обновление визуала? 🤩
Please open Telegram to view this post
VIEW IN TELEGRAM
👍111
Новое оформление канала…
Anonymous Poll
98%
Нравится 👍
2%
Не нравится 👎
👍3
Tip of the day: Распаковка значений в Python 📦

Распаковка значений — это замечательный способ сэкономить время и код при работе с данными в питоне.

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

Если нужно распаковать только часть данных и остальные сохранить, можно использовать оператор звёздочку *. Это позволит сохранить оставшиеся элементы в одной переменной.

Также, если нужно проигнорировать некоторые значения, можно использовать подчёркивание _.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🤯21
Python 3.12: Что нового? 🔥

12 августа вышел Python 3.12, билд 0rc1. Давайте разбираться, какие новые и интересные фичи разработчики завезли в язык.

Улучшенные сообщения об ошибке

В последних версиях Python сообщения об ошибках становятся все более точными (точные позиции в строках) и более подробными (лучшие предложения о том, что может быть неправильным).

Если вы забыли подтянуть библиотеку инструкцией import, то теперь интерпретатор вежливо подскажет (‘did you forget...’) и укажет на опечатки в названии подключаемого модуля.

Переиспользование кавычек в f-строках

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

Порядок слов в инструкции импорта

В крайней версии Python 3.12 стало возможным импортировать модули в адекватном для английского языка порядке слов.

Псевдонимы типов

Если мы объявим кортеж Addresses, который состоит из двух строк, и собираемся создавать его экземпляры, с этим поможет инструкция type.

Перезапись декоратора

Если у нас есть класс Base c методом get_color(), и в наследном классе GoodChild мы хотим эту функцию переопределить, то при помощи инструкции @override это сделать очень просто.

TypedDict для определения типов **kwargs

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

Ознакомиться со всем списком изменений в Python 3.12 можно здесь.

Примеры с кодом найдешь в первом комментарии 🔽
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍5
Я лично транспортир использую
#джоук
😁8👍2
Как ускорить твой код на питоне. Часть 1 🚀

Несмотря на все положительные качества, у питона есть один большой недостаток — низкая скорость. Будучи интерпретируемым языком, питон медленнее других компилируемых языков программирования. Тем не менее, есть несколько полезных советов, как ускорить выполнение своих программ, причем в некоторых случаях даже существенно.

Используй правильную структуру данных

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

Используй list comprehension, а не for-циклы

List compehension — это элегантный и лучший способ создать новый список на основе элементов существующего списка всего за одну строку кода.
List comprehension считается более питоническим способом создания нового списка, чем определение пустого списка и добавление элементов в этот пустой список.
Еще одним преимуществом list compehension является то, что это быстрее, чем использование метода append для добавления элементов в список.

Используй множественное присвоение

Если ты хочешь присвоить значения сразу нескольким переменным, то не присваивай их построчно. В Python есть элегантный и лучший способ присвоения нескольких переменных, например:
a, b, c, d = 2, 3, 5, 7

Не используй глобальные переменные

В Python есть ключевое слово global для объявления глобальных переменных. Но глобальные переменные занимают больше времени во время исполнения кода, чем локальные переменные. Так что лучше не использовать глобальные переменные, если в этом нет необходимости.

P.S. В тг нельзя отправлять слишком длинные сообщения, поэтому вторую часть залью чуть позже 🥸
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2
Как ускорить твой код на питоне. Часть 2 ⚡️

Как и обещал, рассмотрим еще несколько полезных фишек, которые помогут ускорить твой код на python.

Пользуйся built-in функциями

Не пиши свою функцию (вручную), если она уже есть в библиотеке. Библиотечные функции очень эффективны, и, вероятно, что ты не сможешь реализовать желаемую функцию лучше. Кстати, все существующие built-in функции можно найти здесь.

Конкатенируй строки при помощи join

В python ты можешь объединять строки при помощи оператора +, но это также можно сделать с помощью метода join():
concatenated_string = " ".join (["Zen", "of", "python."])

Используй генераторы

Если в твоем списке содержится большой объем данных и тебе нужно использовать все эти данные за раз, то используй генераторы. Это сэкономит ресурсы и время выполнения.

Используй 1 в бесконечных циклах

Используй while 1 вместо while True. Это немного сократит время выполнения.

Старайся не использовать dot операции

Старайся избегать точечной операции. Пример:

import math
val = math.sqrt(60)


Вместо приведенного выше стиля лучше пользоваться следующим подходом:

from math import sqrt
val = sqrt(60)


Потому что, при вызове функции через . (точку) сначала она вызывает getattribute() или getattr(), которые затем используют операцию со словарем, которая требует больше времени.

Эти маленькие, но полезные советы помогут улучшить производительность твоего кода на python. Но главный совет будет звучать так: всегда задумывайся о том, что ты делаешь. При таком подходе риск появления ненужного кода и, следовательно, лишней нагрузки сводится к минимуму 🎉
Please open Telegram to view this post
VIEW IN TELEGRAM
👍103
Docker: что это и с чем его едят 🐳

Наверняка каждый из вас слышал о такой полезной штуке, как Docker. Практически в каждой вакансии на должность backend-разработчика можно встретить данную технологию. Давай разберем Docker по кирпичикам!

Что такое Docker?

Докер — это как контейнеры для программ. Типа таких, в которых перевозят товары на кораблях. Но вместо товаров, в контейнере Docker у тебя может быть приложение, со всеми его компонентами: код, библиотеки, базы данных и т.д.

Зачем это нужно?

Да потому что так удобнее! Когда у тебя приложение завернуто в контейнер, ты можешь запускать его везде, где установлен Docker, и будешь знать, что оно будет работать так, как надо.

Ниже рассмотрим основные понятия, используемые в Докере

Образ (Image)

Это как чертеж для твоего контейнера. Образ — это набор инструкций о том, как собрать контейнер с определенной программой.

Контейнер

Это экземпляр образа. Когда ты запускаешь образ, у тебя получается контейнер, который работает в изоляции от остальной системы. Это как вакцина: у каждого своя.

Dockerfile

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

Реестр (Registry)

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

Все еще считаете, что использование докера необязательно? А что если я скажу, что в докер можно упаковать целую изолированную систему? Это почти правда 🫠

Докер не упаковывает целую операционную систему, но он использует особенности ядра операционной системы хоста для создания изолированной среды, называемой контейнером.

Можно сказать, что Docker создает "легковесный снимок" приложения и его зависимостей, а не всей операционной системы. Это позволяет контейнерам работать быстро и занимать меньше места на диске по сравнению с виртуальными машинами, которые включают в себя полноценные операционные системы.

В первом комментарии оставляю бонус. Дерзайте 👁👄👁
Please open Telegram to view this post
VIEW IN TELEGRAM
👍82🔥1
В последнее время немного сбавил темп постов. У меня как и прежде, есть несколько идей для канала, а пока что появилась возможность постить истории 🙃

Если хотите видеть подобный контент, то проголосуйте ниже. Буду надоедать вам в другом формате 😁

https://t.me/thepythonicway?boost
Please open Telegram to view this post
VIEW IN TELEGRAM
Внезапный, но важный пост 📣

На дворе уже весна, а я какой раз возвращаюсь с мыслью о том, что нужно делиться полезным контентом и воскрешать канал!

Сегодня будет "легкий" на прочтение пост, никаких фишек, техничнских моментов или же обзоров полезных технологий или инструментов.

Хотел просто поговорить с вами. Сейчас у меня небольшая каша в голове и я хочу спросить у вас(если тут кто-нибудь остался 🙂): какой контент вам был бы интересно получать от меня почаще, какой пореже? Может быть это старые форматы, вроде tip of the day, какие-то фишки питона, размышления о ИТ и трендах, или же новые форматы, где я буду постепенно добавлять немного лайфстайла из жизни разработчика? Или же внедрение новых форматов: попробуем сделать свой пет-проект с нуля в группе, под моим менторством, подкасты, а-ля короткие недельные дайджесты о трендах в ИТ, или же на совсем другие темы. А может основательное чтиво в формате статьи, где я буду стараться максимально раскрыть заданную тему? Или, может быть, попробовать податься на ютуб и записывать видосы на разные полезные и не очень темы?

В общем, в первую очередь хочется, чтобы канал развивался и был полезным вам, а во вторую, удовлетворял моим писательским и творческим потребностям 🤪 Все же, не зря сюда подписалось несколько сотен человек, а значит потребность во всем этом есть!

Поэтому ниже прикреплю опросник. Можно голосовать за несколько вариантов сразу. А если соскучились или есть свои предложения - оставляйте комментарии! Буду рад почитать и ответить каждому. Поэтому жду от вас какой-либо обратной связи. Let's go! 🔄
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍1
Нужна ли математика веб-разработчику? 🧮

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

Начнем с того, что вообще такое математика? На самом деле, общепринятого определения не существует 🤷‍♂️

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

Ничего не напоминает? А по-моему, это описание отлично подходит под определение того, что делает программист. По крайней мере, что-то такое есть!

Разработчик постоянно ищет решение путем декомпозиции сложных и широких задач, на более мелкие. Определяет зависимости в логике программы, смотрит на код абстрактно, для определения узких мест и потенциальных проблем. Пробует разные подходы к решению задачи, оптимизирует уже написанные решения.

Если вы хотите конкретного ответа на вопрос, нужна ли математика веб-разработчику, то я бы ответил так: как прикладной инструмент для решения конкретных задач - нет, математика не нужна. А в качестве общего развития и прокачки общих навыков - вполне.

Конечно, мы не берем в расчет специфические направления, вроде геймдева или data science, там другие правила и инструменты. Этот канал посвящен веб-разработке, поэтому мы обсуждаем поставленный вопрос именно в этом контексте.

Какой можно сделать вывод из всего вышесказанного? Можно ли сказать, что ты не сможешь справляться с рутинными задачами на позиции бэкендера, не зная математику? Навряд ли. Будет ли тебе проще решать поставленные задачи, если у тебя уже сформировано алгоритмическое мышление на базовом уровне, а также имеются навыки, вроде систематизации, умения абстрактно посмотреть на проблему, определить закономерности и зависимости? Определено да, будет проще.

Я не скажу, что сейчас нужно все бросать и бежать решать примеры и задачки. Вопрос спорный и индивидуальный. Если у тебя есть свободное время, то конечно, лишним это не будет, а наоборот, только прокачет твои скиллы как разработчика. Или, может быть, ты прямо сейчас учишься в университете? Тогда не прогуливай пары по математике, пробуй разбираться в темах. Ведь умение разобраться, понять и «разложить все по полочкам» многого стоит, и оно точно пригодится тебе в работе.

The Pythonic Way
8👍3🔥2
Что ждет разработчиков и ИТ в 2024 году? Часть 1

2023 выдался мягко скажем, непростым годом. Лопнувший ИТ-пузырь, массовые увольнения, бум ИИ, который отправит нас всех прямиком на каторгу и т.д.. Что же ждет нас с вами, ОЙтишников и отрасль в целом? Уйдем ли мы все на завод, или продолжим писать пару строк кода в неделю, параллельно попивая капучино на кокосовом? Делюсь предположениями в серии постов.

1. Сокращения в компаниях по всему миру.
С появлением ковида в 2019 году, в мире начался кризис, в том числе и венчурный. Венчурные инвестиции — это инвестиции в перспективные новые компании (стартапы) или в компании, стремящиеся существенно расширить бизнес в ожидании получения высокого дохода в будущем.

Из этого исследования видно, что в четвертом квартале(Q4), 2021 года объём инвестиций равнялся $218 млрд, а в Q4, 2022, опустился до отметки в $93 млрд, что почти в 2.5 раза меньше, чем годом ранее, и продолжает падать. В Q3 2023 значения объема инвестиций опустились до рекордно низких за последние годы $70 млрд.

На фоне кризиса, 10 марта 2023 года закрылся Silicon Valley Bank (SVB) после объявления банкротства. Напомню, что этот банк являлся крупнейшим банком Кремниевой долины, входил в индекс S&P 500. Это крупнейшее банкротство банка со времён кризиса 2008 года и второе по величине в истории США.

Вывод? Не бойтесь, это только в Америке.

Ну, а если серьезно, то очевидные проблемы крупных компаний на глобальном рынке ведут за собой сокращения, они задают тренд всем остальным. Компании осознают неэффективность своей политики найма и пытаются решить ее путем сокращений штата.

Что это влечет за собой?

Очевидно, если компания увольняет 10к человек из штата, размером 50к, то количество новых вакансий и свободных мест существенно сократится. Компании продолжат нанимать, но точечно.

Инвесторы и так инвестировали с большой осторожностью, а теперь будет делать это в разы меньше. Стартапам будет тяжелее развиваться и привлекать новые деньги, а соответственно, и новые кадры.

Из вышесказанного можно сделать один четкий вывод: придется переходить на капучино на обычном молоке отсутствие рабочих мест и инвестируемых денег создает явную отрицательную тенденцию в найме в ИТ.

Совет: не нужно паниковать

Ну кризис и кризис, чего бубнить то? В мире уже ни раз случались кризисы, еще с более отягощающими последствиями, но в конечном счете все возвращалось на круги своя.
Продолжайте учиться, получайте важные навыки. Следите за изменением и трендами в отрасли, и меняйтесь вместе с ними. Тогда в любой сложившейся ситуации вы будете оставаться востребованными.

Ну, а на всякий случай: всегда можно успеть пройти курс "Токарь-фрезеровщик с нуля за 3 месяца, с зарплатой от 500000 рублей в неделю" от гикбрейнс.

The Pythonic Way
👍9😁7🐳1
Что ждет разработчиков и ИТ в 2024 году? Часть 2

В первой части мы говорили о глобальном кризисе и о том, что халява закончилась. Сегодня поговорим о самой раздутой теме за последние пару лет - теме ИИ.

2. Искусственный интеллект.
Навряд ли в ближайшее время мы увидим новости о том, что «ИИ лишил работы 10 000 сотрудников условного Гугла», но он уже изменил подходы к обучению и разработке, и в 2024 тренд сохраняется.

Прямо сейчас мы наблюдаем развитие генеративных нейронок, вроде chatGPT или гугловского Gemini, появление новых копайлотов, видео и аудио сервисов, поддерживающих ИИ. Чего только стоит недавно нашумевшее появление Sora? Видимо, не за горами то время, когда в суде люди будут оправдываться за действия, которые и близко не совершали. Некоторые ученые трубят, что появление AGI произойдет уже в ближайшие 5 лет. Такими темпами, нам с вами и до сингулярности не далеко…

Для справки: Artificial general intelligence(AGI) — это универсальный ИИ, способный выполнять умственную работу на человеческом уровне.

Чего делать не надо:
Допускать поддымливание своего котелка и орать: АААА НАС ВСЕХ ЗАМЕНИТ ИИ О НЕТ!!! 🤡

Начнем с того, что компаниям на данный момент тупо невыгодно массово внедрять ИИ в свой бизнес. Дешевле нанять человека. А наиболее эффективные отрасли для применения ИИ это розничная торговля, логистика и здравоохранение. Ученые из MIT говорят между прочим, а не какой-то флоп, вроде меня 🫡

Ну в вдобавок к этому, подумайте сами: если ИИ сможет полноценно заменить рядовых работяг разработчиков, то и всех остальных он также с легкостью заменит, а тут уже и париться не придется. 😏

Так а что тогда прикажешь делать?

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

Что имеем в итоге?

ИИ будет развиваться несмотря на негодование обывателей, не желающих меняться в соответствии с рынком. На сегодняшний момент в США на высоком уровне обсуждают внедрение различных законов для регуляции ИИ, последствия развития ИИ и т.д.. А это означает, что мы уже находимся в новой реальности и должны принять тот факт, что ИИ плотно входит в нашу с вами жизнь, хотим мы того или нет.

И выхода тут два: принять этот факт и использовать современные технологии, чтобы оставаться конкурентноспособным, либо находиться за рамками технологического прогресса, зато нитакушей 🥴

The Pythonic Way
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥82👍1
*Дзынь*

Ааа, опять этот вернулся? Не прошло и 6 месяцев
🙃

Всем привет!

Да, в последний раз я снова надурил вас со своим возвращением, вот такой вот я расхлябанный человек получается. Ну или просто творческая натура, кто знает 🤷‍♂️

За эти пару месяцев у меня все было по-стандарту: работа, парочка личных проектов, попытка запустить бизнес, в общем-то одна сплошная веселуха. Это конечно, если вам интересно куда я опять пропал 🧐

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

А еще я очень давно хотел завести ютуб. И наконец-то на это решился.

Я не хочу просить вас смотреть мой первый видос, подписываться на канал и так далее, потому что вы, все-таки, подписывались сюда с большего ради контента о питоне, НО!

Я развиваюсь, чувствую, что хочу делать видосы, а значит делаю. Да, в регулярности мне не позавидуешь, но я всегда вкладываюсь в то, что мне доставляет и от чего меня прет. На данный момент объектом получения эмоциональной отдачи является именно процесс создания роликов.

Я некоторое время думал, писать ли вообще об этом вам или нет, но соблазн рассказать о моих начинаниях маленькой, но близкой аудитории перевесило все остальное! Ну в общем скромности мне тоже не занимать, вы поняли.

Поэтому, если у вас есть желание поддержать меня просмотром - велком на ютуб!

Сразу скажу, что такого формата вы от меня точно не ожидали, он получился максимально неформальным.
Поэтому, кто перейдет и посмотрит видео - не пугайтесь, это все еще я
😅

Тема видоса, кстати — знакомство со мной. Там я рассказал значительную часть своего пути становления разработчиком: от первых потугов и мыслей, вплоть до первой работы.
В общем-то, это в каком-то смысле пересказ, а скорее даже переосмысление моей старой статьи, которую вы уже все наверное видели, но в совершенно ином формате и с добавлением некоторых подробностей. Я думаю, что вы сможете подчеркнуть для себя что-нибудь новенькое и полезное.

Я не ожидаю от вас какого-то отклика, скорее наоборот, но заранее говорю всем вам спасибо! Я буду очень рад и признателен любому отклику и критике.

Всем мира

@автор
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥3🍾21👏1
Новый видос уже на канале!

Опять же, экспериментирую с форматом. Думаю, что этот видос многим зайдет больше, чем первый. Чисто легенький видик, смотрится на одном дыхании.

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

В общем, еще раз, думаю многим зайдет, да и полезный видос получился. Поэтому, кто хочет - заходите на ютуб и смотрите! ☺️

Ну и вообще, 2 видео за неделю можно и оценить, я старался 😏
Please open Telegram to view this post
VIEW IN TELEGRAM
👍65
Заглянул на подкаст «Не за горами»🎤

Откровенно поговорили с Димой о извечной теме «войти в айти», обсудили мой путь в сферу, выгорание, синдром самозванца, софт-скиллы, мой ютуб канал и еще много чего интересного. Думаю, что найдете для себя много полезностей.

Сразу скажу, что это не реклама, а моя рекомендация к прослушиванию 😎

Не пожалейте времени и лайка, начинающим необходима поддержка, как никому другому. Тем более дело хорошее. Чужой опыт - это очень ценный источник информации.

У подкаста уже вышло 4 выпуска, причем все гости разные, и у каждого своя мотивирующая история. Например, в 3 эпизоде Ангелина делится своим опытом: она объездила мир, работая на круизном лайнере, рассказывает о том, что для нее значит дом, и о своем переезде за океан — в атмосферный Сан-Франциско.

В общем, я уверен, что найдете для себя занятие на досуге. Мне нравится формат подкастов тем, что он не требует зрительного контакта. Наушник в ухо и слушаешь, ну не кайф ли?
Please open Telegram to view this post
VIEW IN TELEGRAM
6