Без aspera ad astra
Мне часто задают вопросы вида «хочу заниматься разработкой, имеет ли смысл сначала устроиться тестировщиком?» Или, например, если человек хочет в аналитику, то иногда пытается двигаться через BI. То есть, люди пытаются иногда вкатываться в новую область через смежную.
Я сама искала первую работу в IT, когда заканчивала универ и работала младшим научным сотрудником в лабе. У меня было резюме с пет-проектами, но, естественно, без опыта на реальных задачах.
Мне тогда казалось, что без опыта никуда не примут, помню ощущение собственной ненужности. Некоторым такое проще: ничего же не теряешь от попытки устроиться. Другим сложнее, потому что во многих глубоко сидит страх перед собеседованиями. Страх быть отвергнутым.
Чаще всего те, кто ищет работу окольным путем, боятся получить отказ или избегают опыта неудачного собеседования. Но отказы — это часть жизни, и повод задуматься — это не когда их много, а когда их мало. Потому что единственный способ не делать ошибок — это не пытаться.
В детстве самым активным из нас говорят «в каждой бочке затычка», а когда вырастаешь, оказывается, что это ценное профессиональное качество. Мне кажется, надо сразу браться то, что нравится. Бесплатно, недорого, либо на стажировке — но не теряя время на ненужные задачи и задерживаясь только на проектах, работа на которых приближает к желаемой картинке будущего.
Но, может, у кого-то из вас был успешный опыт вкатывания в область не напрямую? Например, через BI в аналитику или через разработку в ML. Не когда переквалифицировались, уже будучи зрелым специалистом, а когда специально шли сначала в одну область, чтобы потом попасть другую. Поделитесь в комментариях! 🐠
Мне часто задают вопросы вида «хочу заниматься разработкой, имеет ли смысл сначала устроиться тестировщиком?» Или, например, если человек хочет в аналитику, то иногда пытается двигаться через BI. То есть, люди пытаются иногда вкатываться в новую область через смежную.
Я сама искала первую работу в IT, когда заканчивала универ и работала младшим научным сотрудником в лабе. У меня было резюме с пет-проектами, но, естественно, без опыта на реальных задачах.
Мне тогда казалось, что без опыта никуда не примут, помню ощущение собственной ненужности. Некоторым такое проще: ничего же не теряешь от попытки устроиться. Другим сложнее, потому что во многих глубоко сидит страх перед собеседованиями. Страх быть отвергнутым.
Чаще всего те, кто ищет работу окольным путем, боятся получить отказ или избегают опыта неудачного собеседования. Но отказы — это часть жизни, и повод задуматься — это не когда их много, а когда их мало. Потому что единственный способ не делать ошибок — это не пытаться.
В детстве самым активным из нас говорят «в каждой бочке затычка», а когда вырастаешь, оказывается, что это ценное профессиональное качество. Мне кажется, надо сразу браться то, что нравится. Бесплатно, недорого, либо на стажировке — но не теряя время на ненужные задачи и задерживаясь только на проектах, работа на которых приближает к желаемой картинке будущего.
Но, может, у кого-то из вас был успешный опыт вкатывания в область не напрямую? Например, через BI в аналитику или через разработку в ML. Не когда переквалифицировались, уже будучи зрелым специалистом, а когда специально шли сначала в одну область, чтобы потом попасть другую. Поделитесь в комментариях! 🐠
Одна особенность filter
Синтаксис встроенной функции
Эта функция фильтрует значения переданной последовательности с помощью функции
Например, таким способом можно отфильтровать только строки, состоящие из чисел:
А еще (внезапно) вместо функции можно использовать
Синтаксис встроенной функции
filter
такой: filter(function, iterable)
. Эта функция фильтрует значения переданной последовательности с помощью функции
function
. Если function
получает очередной элемент последовательности и возвращает True
, то элемент попадает в результат работы filter
, иначе нет. Например, таким способом можно отфильтровать только строки, состоящие из чисел:
Или только четные значения:
>>> strings = ['two', 'list', '', 'dict', '100', '1', '50']
>>> list(filter(str.isdigit, strings))
['100', '1', '50']
Часто в качестве фильтров используют лямбда-функции или член-функции классов.
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list(filter(lambda x: x % 2 == 0, numbers))
А еще (внезапно) вместо функции можно использовать
None
: И тогда
>>> random = [1, 'a', 0, False, True, '0', '']
>>> list(filter(None, random))
[1, 'a', True, '0']
filter
вернет только truthy значения. 🐠Что здесь хорошего
Расскажу тем, что здесь недавно (и напомню тем, кто давно), что за движ в этом канале.
Сначала обо мне. Канал авторский, автора зовут Маша Чакчурина (это я). До IT я занималась астрофизикой, а в программировании начинала как C++ разработчица в компании StarLine в СПб. Там я перешла на Python, писала API, микросервисы, поучаствовала в их беспилотнике. После этого работала в Kaspersky, была техничсеким кофаундером в стартапе, делала голосового помощника в Сбере. Всего я в бэкенде шесть лет, последние два преподаю.
Итак, что здесь хорошего.
👶 Тут есть посты об основах языка и стиле кода для junior коллег. Например, что такое мутабельность и иммутабельность, какая сложность добавления операции в список, чем is отличается от ==, как инициализировать контейнеры в функциях и многие другие.
👩🔧 Поменьше постов о низкоуровневых особенностях языка для middle и senior, например, развернуто о том, как работает TimSort.
😽 Есть о софт-скиллах в IT, например, о том, как онбордиться на новый проект, или о вопросах коллегам. Еще у нас с основательницей школы IT Girl School Алисой был эфир с разбором резюме подписчиков.
⚡ Бывают новости Python: о свежих либах, обновлениях или о новых крутых курсах от гуру вроде Дэна Бейдера.
🧐 Иногда пишу об истории языка (как здесь и здесь).
🎪 Есть шютки, например, послушайте песню про PEP8.
🧭 Есть старая подборка бесплатных материалов по computer science (давно хочу обновить).
Еще я веду курс по Python для тех, кто еще никогда не писал программы. Курс составила сама, с моей фирменной подачей «просто о сложном». Время от времени я набираю группы на этот курс и много сил трачу на поддержку учеников. Для меня это важный личный проект🤍
Если вы знаете кого-то, кто интересуется Python, перешлите ему или ей, пожалуйста, этот текст. Помогите мне встретить тех, кому интересно то, что я делаю✨
И оставайтесь в CoolPython 🐠
Расскажу тем, что здесь недавно (и напомню тем, кто давно), что за движ в этом канале.
Сначала обо мне. Канал авторский, автора зовут Маша Чакчурина (это я). До IT я занималась астрофизикой, а в программировании начинала как C++ разработчица в компании StarLine в СПб. Там я перешла на Python, писала API, микросервисы, поучаствовала в их беспилотнике. После этого работала в Kaspersky, была техничсеким кофаундером в стартапе, делала голосового помощника в Сбере. Всего я в бэкенде шесть лет, последние два преподаю.
Итак, что здесь хорошего.
👶 Тут есть посты об основах языка и стиле кода для junior коллег. Например, что такое мутабельность и иммутабельность, какая сложность добавления операции в список, чем is отличается от ==, как инициализировать контейнеры в функциях и многие другие.
👩🔧 Поменьше постов о низкоуровневых особенностях языка для middle и senior, например, развернуто о том, как работает TimSort.
😽 Есть о софт-скиллах в IT, например, о том, как онбордиться на новый проект, или о вопросах коллегам. Еще у нас с основательницей школы IT Girl School Алисой был эфир с разбором резюме подписчиков.
⚡ Бывают новости Python: о свежих либах, обновлениях или о новых крутых курсах от гуру вроде Дэна Бейдера.
🧐 Иногда пишу об истории языка (как здесь и здесь).
🎪 Есть шютки, например, послушайте песню про PEP8.
🧭 Есть старая подборка бесплатных материалов по computer science (давно хочу обновить).
Еще я веду курс по Python для тех, кто еще никогда не писал программы. Курс составила сама, с моей фирменной подачей «просто о сложном». Время от времени я набираю группы на этот курс и много сил трачу на поддержку учеников. Для меня это важный личный проект🤍
Если вы знаете кого-то, кто интересуется Python, перешлите ему или ей, пожалуйста, этот текст. Помогите мне встретить тех, кому интересно то, что я делаю✨
И оставайтесь в CoolPython 🐠
Прямо сейчас в голосовом чате с крутыми специалистами по DS и бэку обсуждаем:
🐠 Python фреймворки,
🐠 Асинхронность,
🐠 GPT-3,
🐠 достижения машинного зрения,
🐠 студию Артемия Лебедева 😅,
🐠 версии Python,
🐠 плохой и хороший код.
Присоединяйтесь. Записи не будет)
Кто был, поделитесь, пожалуйста, как вам? Делать еще такие эфиры?
🐠 Python фреймворки,
🐠 Асинхронность,
🐠 GPT-3,
🐠 достижения машинного зрения,
🐠 студию Артемия Лебедева 😅,
🐠 версии Python,
🐠 плохой и хороший код.
Присоединяйтесь. Записи не будет)
Кто был, поделитесь, пожалуйста, как вам? Делать еще такие эфиры?
Магические методы
Магические методы Python -- важный элемент синтаксиса языка. В них нет ничего волшебного или тайного, а наоборот, мы постоянно их вызываем, перегружаем и используем в коде.
Давно хотела о них написать вводную и вот авторы канала @it_resume любезно подготовили для нас с вами карточки.
Наслаждайтесь!
Магические методы Python -- важный элемент синтаксиса языка. В них нет ничего волшебного или тайного, а наоборот, мы постоянно их вызываем, перегружаем и используем в коде.
Давно хотела о них написать вводную и вот авторы канала @it_resume любезно подготовили для нас с вами карточки.
Наслаждайтесь!
Про культуру коммитов
Работаю над куском кода, который опирается на json файл. Файл этот длиной 7к+ строк (только не спрашивайте, как так вышло). И кусок этот одновременно
- сложный
- используется большим количеством пользователей.
И тут из мастера в этот json прилетают изменения. В которых во всем файле пробелы заменены на табы. То есть, дифф слишком большой и отсмотреть глазами не получается. Поправлю, конечно, но досадно -- и небезопасно.
В связи с чем напоминаю, как коммитить (вот, например, хорошая статья от другого автора)
Для меня главное в этом тексте:
Один коммит = одна атомарная задача
И от себя бы еще добавила:
Дифф удобно смотреть ривьюеру
Чтобы этого добиться, перед каждым коммитом нужно отсматривать изменения в каждом файле, которые хотите залить в репо: с помощью
И еще я никогда не делаю
чтобы даже не привыкать добавлять всю работу, которая у меня есть локально: в ней бывают мусор и наброски кода. Если себя приучить к этому, то гораздо сложнее случайно залить то, что лить не хотели.
Поделитесь, какие хорошие практики работы с git вы усвоили за время работы?
Работаю над куском кода, который опирается на json файл. Файл этот длиной 7к+ строк (только не спрашивайте, как так вышло). И кусок этот одновременно
- сложный
- используется большим количеством пользователей.
И тут из мастера в этот json прилетают изменения. В которых во всем файле пробелы заменены на табы. То есть, дифф слишком большой и отсмотреть глазами не получается. Поправлю, конечно, но досадно -- и небезопасно.
В связи с чем напоминаю, как коммитить (вот, например, хорошая статья от другого автора)
Для меня главное в этом тексте:
Один коммит = одна атомарная задача
И от себя бы еще добавила:
Дифф удобно смотреть ривьюеру
Чтобы этого добиться, перед каждым коммитом нужно отсматривать изменения в каждом файле, которые хотите залить в репо: с помощью
git diff
или в IDE.И еще я никогда не делаю
git add .
чтобы даже не привыкать добавлять всю работу, которая у меня есть локально: в ней бывают мусор и наброски кода. Если себя приучить к этому, то гораздо сложнее случайно залить то, что лить не хотели.
Поделитесь, какие хорошие практики работы с git вы усвоили за время работы?
Уже больше часа лежит весь Фейсбук. Вместе с продуктами компании (WhatsApp, Instagram, мессенджером), отвалились даже DNS и страница статусов https://status.fb.com. И может не работать всё то, что опиралось на fb.
Интересно, что случилось.
Интересно, что случилось.
Вопрос по Python. Как думаете, является ли тип complex составным?
Anonymous Quiz
19%
Это простой тип
36%
Это составной тип
45%
Что такое complex?
Пара фактов о численных типах
(которые вы, возможно, не знали)
Факт 1
В Python есть три встроенных численных типа. Кроме
Комплексные числа много используют в математике (например, с их помощью можно брать некоторые забористые интегралы, которые обычным способом не берутся), и в физике (особенно в расчетах, связанных с электричеством и магнетизмом).
Сконструировать комплексное число в Python можно так:
или вот так:
Получится одно и то же.
Факт 2
Все численные типы в Python унаследованы от класса
Кстати, сюрприз:
Факт 3
Под капотом логический тип — те же числа, только
Это же, впрочем, дает ни разу не интуитивное поведение в некоторых случаях:
Факт 4
Complex не является составным типом. Это просто объект, который принимает до двух параметров при инициализации.
Такие дела!🤗
(которые вы, возможно, не знали)
Факт 1
В Python есть три встроенных численных типа. Кроме
int
и float
, которыми мы обычно пользуемся, есть еще complex
— комплексные числа. Комплексные числа много используют в математике (например, с их помощью можно брать некоторые забористые интегралы, которые обычным способом не берутся), и в физике (особенно в расчетах, связанных с электричеством и магнетизмом).
Сконструировать комплексное число в Python можно так:
a = complex(2, 1)
или вот так:
a = 2 + 1j
Получится одно и то же.
Факт 2
Все численные типы в Python унаследованы от класса
Number
. Проверить это можно так: from numbers import Number
isinstance(1984, Number) #True
isinstance(3.1415926, Number) #True
isinstance(1j, Number) #True
Кстати, сюрприз:
bool
тоже унаследован от Number
:isinstance(False, Number) #True
Факт 3
Под капотом логический тип — те же числа, только
bool
имеет всего два значения: 0
и 1
. Это обеспечивает нам легкое приведение True
к единице, а False
к нулю. Это же, впрочем, дает ни разу не интуитивное поведение в некоторых случаях:
1/False # ZeroDivisionError: division by zero
True * 1 # 1
False * 1 # 0
complex(True, 3.9) # (1+3.9j)
my_list = [1, 2, 3, 4]
my_list[False] # 1
"False"[True] # a
А, и даФакт 4
Complex не является составным типом. Это просто объект, который принимает до двух параметров при инициализации.
Такие дела!🤗
/
и *
в определнии функцииВидели когда-нибудь вот такой синтаксис?
def foo(first, /, second, *, third):
print(first, second, third)
Выглядит странно?
На самом деле
/
и *
навязывают положение ключевых и позиционных аргументов.Попытаемся, например, вызвать
foo()
с неправильным набором параметров: >>> foo("bar", "qux")
...
TypeError: foo() missing 1 required keyword-only argument: 'third'
Нужен keyword аргумент, окей, укажем все параметры:
>>> foo("bar", "baz", "qux")
...
TypeError: foo() takes 2 positional arguments but 3 were given
А, один из них по ключу:
>>> foo("bar", "baz", third="qux")
bar baz qux
Получилось!
Оба символа опциональны. И, в моем опыте, если ставят, то чаще только звездочку.
Источник: https://docs.python.org/3/tutorial/controlflow.html#special-parameters
🐠