Декораторы
Очень важная тема, с помощью декорирования можно писать очень удобные логи или существенно расширять функции.
Многие библиотеки работают с использованием декораторов: Flask и aiogram хорошие тому примеры.
Мы показываем лишь простой пример, возможности куда шире. Позже покажем пример использования с упоминаемыми выше библиотеками.
Очень важная тема, с помощью декорирования можно писать очень удобные логи или существенно расширять функции.
Многие библиотеки работают с использованием декораторов: Flask и aiogram хорошие тому примеры.
Мы показываем лишь простой пример, возможности куда шире. Позже покажем пример использования с упоминаемыми выше библиотеками.
Распаковка
Неудобно каждый раз для вывода объединять строки через join() или тем более как-то объединять числа. Мы можем распаковать кортеж или список, воспользовавшись звездочкой *. Со словарями данный способ не работает.
На самом деле применение более широкое. Звездочка может также собирать несколько значений в одну переменную. Очень удобно применять для функций с бесконечным количеством аргументов или только с именованными аргументами.
Неудобно каждый раз для вывода объединять строки через join() или тем более как-то объединять числа. Мы можем распаковать кортеж или список, воспользовавшись звездочкой *. Со словарями данный способ не работает.
На самом деле применение более широкое. Звездочка может также собирать несколько значений в одну переменную. Очень удобно применять для функций с бесконечным количеством аргументов или только с именованными аргументами.
Forwarded from Python jobs — вакансии по питону, Django, Flask
👨🏻💻Middle Python Developer, Serpstat, удалённо или в офис, Одесса, Киев
О компании:
🔸В команду Serpstat (международный HighLoad проект) ищем Middle Python Developer.
🔸Технологии, которые используем в компании: Python3, PostgreSQL, Scrappy, ElasticSearch, Rabbitmq.
🔸Serpstat — это 245 000+ пользователей, продукт представлен в 230 странах, базы данных Google для всех стран, 230 баз ключевиков, более 300 серверов, больше 250 Тб данных.
Что мы ожидаем от Вас:
🔸Опыт разработки на Python от 2 лет.
🔸Знание и понимание принципов ООП.
🔸Опыт проектирования баз данных и оптимизация запросов.
🔸Опыт разработки асинхронных приложений.
🔸Опыт проектирования и разработки data pipeline.
🔸Знание Unix систем.
Что мы готовы предложить:
🔸Удобный график: с 8-10 до 17-19
🔸Зарплата по итогам собеседования.
🔸Возможность работать в офисе в Одессе, Киеве, или полностью удаленно.
🔸Оплачиваемые больничные и отпуск.
🔸Посещение профильных конференции за счет компании (мы оплачиваем 50% стоимости билета на мероприятие и проезда), а также участие в конференциях и семинарах организаторами которых является Netpeak Group.
🔸Возможность обучения и развития: опыт и помощь наших сотрудников, помощь в профессиональной адаптации и обучение куратора на протяжении всего испытательного срока.
🔸Карьерную лестницу и карту знаний, которые дают прозрачное понимание того, что надо сделать, чтобы перейти на новую ступеньку.
Подробности вакансии: https://career.netpeak.group/vacancy/middle-python-developer/
Контакт: @twen_netpeak
О компании:
🔸В команду Serpstat (международный HighLoad проект) ищем Middle Python Developer.
🔸Технологии, которые используем в компании: Python3, PostgreSQL, Scrappy, ElasticSearch, Rabbitmq.
🔸Serpstat — это 245 000+ пользователей, продукт представлен в 230 странах, базы данных Google для всех стран, 230 баз ключевиков, более 300 серверов, больше 250 Тб данных.
Что мы ожидаем от Вас:
🔸Опыт разработки на Python от 2 лет.
🔸Знание и понимание принципов ООП.
🔸Опыт проектирования баз данных и оптимизация запросов.
🔸Опыт разработки асинхронных приложений.
🔸Опыт проектирования и разработки data pipeline.
🔸Знание Unix систем.
Что мы готовы предложить:
🔸Удобный график: с 8-10 до 17-19
🔸Зарплата по итогам собеседования.
🔸Возможность работать в офисе в Одессе, Киеве, или полностью удаленно.
🔸Оплачиваемые больничные и отпуск.
🔸Посещение профильных конференции за счет компании (мы оплачиваем 50% стоимости билета на мероприятие и проезда), а также участие в конференциях и семинарах организаторами которых является Netpeak Group.
🔸Возможность обучения и развития: опыт и помощь наших сотрудников, помощь в профессиональной адаптации и обучение куратора на протяжении всего испытательного срока.
🔸Карьерную лестницу и карту знаний, которые дают прозрачное понимание того, что надо сделать, чтобы перейти на новую ступеньку.
Подробности вакансии: https://career.netpeak.group/vacancy/middle-python-developer/
Контакт: @twen_netpeak
Topvisor. Help
URL Shortener - Topvisor Help — Topvisor. Help
Shorten URLs to get compact links and attractive links to share to forums, social media or copy to messengers
Выполнить строку - eval()
Говорят, каждый программист должен написать калькулятор. Но если вы python разработчик, то вы можете сделать это в одну строчку:
Что за eval и почему это работает?
eval() создана чтобы выполнять выражения и функции, обязательно возвращая какой-то результат. Так можно облегчить написание кода, принимая строкой словари, списки.
Единственное, что не умеет eval - присваивать что-то переменным. Зато она может их использовать!
Правильное применение функции сильно упростит вам жизнь.
Говорят, каждый программист должен написать калькулятор. Но если вы python разработчик, то вы можете сделать это в одну строчку:
Что за eval и почему это работает?
eval() создана чтобы выполнять выражения и функции, обязательно возвращая какой-то результат. Так можно облегчить написание кода, принимая строкой словари, списки.
Единственное, что не умеет eval - присваивать что-то переменным. Зато она может их использовать!
Правильное применение функции сильно упростит вам жизнь.
В этом пошаговом проекте мы создадим инструмент массового переименования файлов с использованием Python и pathlib для управления процессом переименования файлов.
https://proglib.io/w/da640354
https://proglib.io/w/da640354
Realpython
Build a Bulk File Rename Tool With Python and PyQt – Real Python
In this step-by-step project, you'll build a bulk file rename tool using Python and pathlib to manage the file renaming process and PyQt to provide the application's GUI.
Пришло время подвести итоги конкурса на лучший контент #proglib_contest. Искренне благодарим всех, кто принял активное участие, без вашей поддержки конкурс бы не получился.
Победителем канала Библиотека питониста становится автор поста — барабанная дробь 🥁 — https://t.me/pyproglib/2330.
Победитель определен по количеству лайков под постом среди других конкурсных сообщений. За победный пост автор получает 20 000 ₽. В ближайшее время мы свяжемся с победителем и отправим приз — оставайтесь на связи.
Спасибо, что читаете нас! ✨
Победителем канала Библиотека питониста становится автор поста — барабанная дробь 🥁 — https://t.me/pyproglib/2330.
Победитель определен по количеству лайков под постом среди других конкурсных сообщений. За победный пост автор получает 20 000 ₽. В ближайшее время мы свяжемся с победителем и отправим приз — оставайтесь на связи.
Спасибо, что читаете нас! ✨
Telegram
Библиотека питониста
Загрузчик YouTube-роликов на Python
Зачастую новички быстро теряют интерес к программированию, потому что не могут сразу применить свои знания на практике и сделать что-то интересное и полезное. Вывод цифр и результатов работы сортировочных алгоритмов в…
Зачастую новички быстро теряют интерес к программированию, потому что не могут сразу применить свои знания на практике и сделать что-то интересное и полезное. Вывод цифр и результатов работы сортировочных алгоритмов в…
Learn Python Visually: Creative Coding with Processing .py (2021)
Автор: Tristan Bunn
Количество страниц: 296
Эта книга для начинающих знакомит непрограммистов с основами Python в визуальном контексте, ориентированном на искусство. Замечательно эффективный подход Тристана Банна к обучению создан, чтобы помочь вам понять и заодно визуализировать основные концепции программирования. По мере того, как вы станете более свободно владеть как Python, так и программированием в целом, темы в книге будут смещаться в сторону овладения алгоритмическим мышлением.
Скачать книгу
Автор: Tristan Bunn
Количество страниц: 296
Эта книга для начинающих знакомит непрограммистов с основами Python в визуальном контексте, ориентированном на искусство. Замечательно эффективный подход Тристана Банна к обучению создан, чтобы помочь вам понять и заодно визуализировать основные концепции программирования. По мере того, как вы станете более свободно владеть как Python, так и программированием в целом, темы в книге будут смещаться в сторону овладения алгоритмическим мышлением.
Скачать книгу
Telegram
Книги для программистов (reserved)
Learn Python Visually: Creative Coding with Processing .py (2021)
Автор: Tristan Bunn
Автор: Tristan Bunn
Бесконечные списки
Мы уже рассказывали про важность копирования списков. Но именно из-за такой процедуры появляется возможность создавать бесконечные списки. Дойти до конца такого списка невозможно, при этом он потребляет минимум памяти. Попробуйте создать сами.
На картинке (см. выше) видно создание. А затем мы пробуем модуль copy, чтобы узнать сможет ли он сделать глубокое копирование бесконечного объекта?
Применить знание особо негде, но данное задание помогает понять работу списков. Возможно, такой вопрос задаст вам рекрутер на одном из собеседований.
Мы уже рассказывали про важность копирования списков. Но именно из-за такой процедуры появляется возможность создавать бесконечные списки. Дойти до конца такого списка невозможно, при этом он потребляет минимум памяти. Попробуйте создать сами.
На картинке (см. выше) видно создание. А затем мы пробуем модуль copy, чтобы узнать сможет ли он сделать глубокое копирование бесконечного объекта?
Применить знание особо негде, но данное задание помогает понять работу списков. Возможно, такой вопрос задаст вам рекрутер на одном из собеседований.
Можете ли вы динамически подсчитать, сколько позиционных аргументов передается функции?
https://proglib.io/w/86d2089f
https://proglib.io/w/86d2089f
Stack Overflow
Count how many arguments passed as positional
If I have a function
def foo(x, y):
pass
how can I tell, from inside the function, whether y was passed positionally or with its keyword?
I'd like to have something like
def foo(x, y):
if
def foo(x, y):
pass
how can I tell, from inside the function, whether y was passed positionally or with its keyword?
I'd like to have something like
def foo(x, y):
if
Копирование словарей и других объектов
Новички часто допускают такую ошибку при создании копии списка:
lst2 = lst1
При работе с одним из словарей оказывается, что изменяются оба.
Почему так происходит?
Об этом — в завтрашнем посте. Пока что расскажу, как этого избежать:
У списка существует специальный метод copy(), который нужен как раз для таких случаев.
Но подобное работает не всегда! Если имеется множество вложенных списков, то надо сделать полное копирование импортировав модуль copy и воспользовавшись методом deepcopy().
Новички часто допускают такую ошибку при создании копии списка:
lst2 = lst1
При работе с одним из словарей оказывается, что изменяются оба.
Почему так происходит?
Об этом — в завтрашнем посте. Пока что расскажу, как этого избежать:
У списка существует специальный метод copy(), который нужен как раз для таких случаев.
Но подобное работает не всегда! Если имеется множество вложенных списков, то надо сделать полное копирование импортировав модуль copy и воспользовавшись методом deepcopy().
Почему присвоение не является копированием?
В python все является объектом. В этом легко убедится воспользовавшись функцией dir().
При присвоении в новую переменную отправляется ссылка на объект. А при изменении объекта ссылка на него не меняется.
Тут многие могут спросить про строки и числа, поэтому отвечаю — с ними то же самое. Просто при операциях не изменяется старый объект, а создается новый. Все это можно проследить воспользовавшись функцией id(), которая показывает номер объекта.
Интересно то, что за частью чисел в языке на программном уровне закреплена ссылка на объект. Можете попробовать сами.
В python все является объектом. В этом легко убедится воспользовавшись функцией dir().
При присвоении в новую переменную отправляется ссылка на объект. А при изменении объекта ссылка на него не меняется.
Тут многие могут спросить про строки и числа, поэтому отвечаю — с ними то же самое. Просто при операциях не изменяется старый объект, а создается новый. Все это можно проследить воспользовавшись функцией id(), которая показывает номер объекта.
Интересно то, что за частью чисел в языке на программном уровне закреплена ссылка на объект. Можете попробовать сами.
В одну строчку
Python гибкий язык и позволяет многое сделать в одну строчку. К примеру, матрицу из одних нулей. Или постоянно возрастающий список.
Такие методы лучше использовать когда надо сгенерировать что-то маленькое или нужное. Если использовать нужно сейчас и строго по одному, то лучше использовать итераторы. Об итераторах подробнее расскажем чуть позже.
Примеры списочных выражений на картинке. В следующий раз не придется набирать одинаковый текст несколько раз.
Python гибкий язык и позволяет многое сделать в одну строчку. К примеру, матрицу из одних нулей. Или постоянно возрастающий список.
Такие методы лучше использовать когда надо сгенерировать что-то маленькое или нужное. Если использовать нужно сейчас и строго по одному, то лучше использовать итераторы. Об итераторах подробнее расскажем чуть позже.
Примеры списочных выражений на картинке. В следующий раз не придется набирать одинаковый текст несколько раз.
🐍 Где изучать Python в 2021 году: 78 ресурсов для начинающих
Мы отобрали лучшие бесплатные курсы на русском языке, онлайн-тренажеры и телеграм-каналы, которые помогут новичку реализовать свой потенциал в Python-разработке.
https://proglib.io/sh/8yFI5qaeCb
Мы отобрали лучшие бесплатные курсы на русском языке, онлайн-тренажеры и телеграм-каналы, которые помогут новичку реализовать свой потенциал в Python-разработке.
https://proglib.io/sh/8yFI5qaeCb
Кругом только и слышно, что об искусственном интеллекте, машинном обучении, Data Science... Но как начинаешь разбираться, нужна серьёзная математическая подготовка на уровне вуза. Мы пригласили опытных преподавателей МГУ помочь нашим читателям подготовиться к карьере дата сайентиста.
В наборе всё, что нужно: мат. анализ, линейная алгебра, комбинаторика, теория вероятностей и мат. статистика. Кстати, именно такой багаж знаний требуют от абитуриентов ШАД. Каждая тема сопровождается подготовительными материалами, лекциями и практическими заданиями. Всё это с обратной связью кураторов и преподавателей.
Полная программа курса и прочая информация здесь
Специально для наших подписчиков скидка 15% по промокоду PYPROGLIB
Поспешите, осталось всего 9 мест.
В наборе всё, что нужно: мат. анализ, линейная алгебра, комбинаторика, теория вероятностей и мат. статистика. Кстати, именно такой багаж знаний требуют от абитуриентов ШАД. Каждая тема сопровождается подготовительными материалами, лекциями и практическими заданиями. Всё это с обратной связью кураторов и преподавателей.
Полная программа курса и прочая информация здесь
Специально для наших подписчиков скидка 15% по промокоду PYPROGLIB
Поспешите, осталось всего 9 мест.
Библиотека Numpy
Библиотека облегчающая работу со списками. Работает намного быстрее стандартных методов за счет написания на более быстром С и Фортран. Однако работает не со списками, а с массивами (все объекты одного типа).
При простом вычислении квадратного корня от 0 до 10^6 python затрачивает примерно 0.38 секунды, если вы выберите самый хороший способ - map. Быстро да? При худших способах способах время тоже не сильно упадет еще больше до 0.64 секунды. Но с помощью Numpy можно улучшить первый результат в 10 раз!
Из-за быстроты и огромного потенциала используют в машинном обучении и Big Data, ведь, библиотека обрабатывает данные.
Библиотека облегчающая работу со списками. Работает намного быстрее стандартных методов за счет написания на более быстром С и Фортран. Однако работает не со списками, а с массивами (все объекты одного типа).
При простом вычислении квадратного корня от 0 до 10^6 python затрачивает примерно 0.38 секунды, если вы выберите самый хороший способ - map. Быстро да? При худших способах способах время тоже не сильно упадет еще больше до 0.64 секунды. Но с помощью Numpy можно улучшить первый результат в 10 раз!
Из-за быстроты и огромного потенциала используют в машинном обучении и Big Data, ведь, библиотека обрабатывает данные.
В одну строку - итератор
Вы уже знаете, как писать многие крутые штуки в одну строчку. Но можно ускорить работу кода, используя итераторы.
Итератор - объект, который хранит начало, конец, текущий элемент и правило преобразований. В итоге мы можем получать только новые значения.
Преимущество в том, что итераторы потребляют намного меньше памяти, чем списки и кортежи.
Вы уже точно знаете один итератор и даже пользуетесь им - range().
А есть еще один очень полезный - map(). Он принимает два аргумента, функцию для задания правила преобразования и что-то, что требуется преобразовать.
Вы уже знаете, как писать многие крутые штуки в одну строчку. Но можно ускорить работу кода, используя итераторы.
Итератор - объект, который хранит начало, конец, текущий элемент и правило преобразований. В итоге мы можем получать только новые значения.
Преимущество в том, что итераторы потребляют намного меньше памяти, чем списки и кортежи.
Вы уже точно знаете один итератор и даже пользуетесь им - range().
А есть еще один очень полезный - map(). Он принимает два аргумента, функцию для задания правила преобразования и что-то, что требуется преобразовать.
«Лаборатория Касперского» открывает набор на стажировку SafeBoard. Это отличная возможность бодро начать карьеру в IT еще до окончания вуза — успей подать заявку.
Главное о стажировке:
• Проходит в московском офисе и открыта для студентов любых ВУЗов и курсов;
• Совместима с учебой — гибкий график 20 часов в неделю. Можно и больше, если есть желание и возможность: до 35 часов — в учебное время, до 40 часов — летом.
• Длится год;
• Оплачивается (а еще стажерам ежемесячно компенсируют расходы на питание, предоставляют бесплатный unlim-доступ к спортзалу и ко всем открытым мероприятиям).
Набор ведется на направления:
• Разработка (С++);
• Разработка (C#/Python/Go);
• Разработка (Scala/Java/Python/Go);
• Тестирование (Python/ручное);
• Системный анализ;
• Системное администрирование;
• Mobile;
• Data Science;
• Анализ вредоносного ПО;
• Пентест.
Лучшие участники получат приглашение на работу.
Подать заявку: https://kas.pr/cjg8
Главное о стажировке:
• Проходит в московском офисе и открыта для студентов любых ВУЗов и курсов;
• Совместима с учебой — гибкий график 20 часов в неделю. Можно и больше, если есть желание и возможность: до 35 часов — в учебное время, до 40 часов — летом.
• Длится год;
• Оплачивается (а еще стажерам ежемесячно компенсируют расходы на питание, предоставляют бесплатный unlim-доступ к спортзалу и ко всем открытым мероприятиям).
Набор ведется на направления:
• Разработка (С++);
• Разработка (C#/Python/Go);
• Разработка (Scala/Java/Python/Go);
• Тестирование (Python/ручное);
• Системный анализ;
• Системное администрирование;
• Mobile;
• Data Science;
• Анализ вредоносного ПО;
• Пентест.
Лучшие участники получат приглашение на работу.
Подать заявку: https://kas.pr/cjg8
Функции map(), filter() и reduce() используют, чтобы привнести в Python немного функционального программирования.
Все три из них являются удобными функциями, которые можно заменить на списки или циклы. Но они
обеспечивают более элегантный и краткий подход к некоторым задачам.
1. map() - функция map перебираeт все элементы в данном итеративном объекте и выполняeт функцию, которую мы передали в качестве аргумента для каждого из них.
2. filter() - Подобно map(), filter() принимает объект функции и итерацию и создает новый список. Как следует из названия, filter() формирует новый список, содержащий только элементы, удовлетворяющие определенному условию.
3. reduce() - reduce работает иначе, чем map() и filter(). Он не возвращает новый список, основанный на функции и итерации, которые мы передали.
Вместо этого он возвращает одно значение. На картинке мы приводим пример сложения чисел. Но это самое простейшее. Можно перемножать, возводить в квадрат и многое другое (и не обязательно с числами).
Все три из них являются удобными функциями, которые можно заменить на списки или циклы. Но они
обеспечивают более элегантный и краткий подход к некоторым задачам.
1. map() - функция map перебираeт все элементы в данном итеративном объекте и выполняeт функцию, которую мы передали в качестве аргумента для каждого из них.
2. filter() - Подобно map(), filter() принимает объект функции и итерацию и создает новый список. Как следует из названия, filter() формирует новый список, содержащий только элементы, удовлетворяющие определенному условию.
3. reduce() - reduce работает иначе, чем map() и filter(). Он не возвращает новый список, основанный на функции и итерации, которые мы передали.
Вместо этого он возвращает одно значение. На картинке мы приводим пример сложения чисел. Но это самое простейшее. Можно перемножать, возводить в квадрат и многое другое (и не обязательно с числами).