Python School
82.1K subscribers
2.42K photos
8 videos
582 links
Уроки по Python, которые упростят вам жизнь. Без идиотских туториалов.

Наши мемы для программистов: @conhum

Сотрудничество - @alivian

Канал сотрудничает с рекламным сервисом @Tgpodbor_official

РКН: clck.ru/3G6pBb
Download Telegram
Дата саентисты, работающие с нейросетями, часто сталкиваются с недостатком данных для обучения. Классический выход из положения — провести transfer learning при помощи finetuning — обладает досадным свойством катастрофического забывания.

На demo-занятии OTUS 24 августа вы разберете метод перемежающейся тренировки, позволяющий избежать переобучения на маленьком датасете.

Вебинар проведет Дмитрий Хизбуллин, тимлид в исследовательском центре Huawei. Это возможность познакомиться с преподавателем и материалам онлайн-курса «Deep Learning. Basic».

Для регистрации пройдите вступительный тест: https://otus.pw/YJNN/
Что такое метаклассы — короткий обзор

Предположим, что вы знаете разницу между классами и объектами. Тогда метаклассы не должны быть для вас слишком уж сложными. Если кратко, то они являются классами для классов (отсюда и «мета» в их названии).

Проще говоря, в то время как классы являются чертежами для объектов, метаклассы являются чертежами для классов. Класс является описанием, когда мы создаем его экземпляр, тогда как метакласс является описанием класса, и существует только когда определен класс.

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

Прежде чем перейти к тому, что такое замыкание, мы должны сначала понять, что такое вложенная функция и нелокальная (nonlocal) переменная.

Функция, определенная внутри другой функции, называется вложенной функцией. Вложенные функции могут получать доступ к переменным из локальной области видимости объемлющих функций (enclosing scope).

В Python нелокальные переменные по умолчанию доступны только для чтения. Если нам необходимо их модифицировать, то мы должны объявить их явно как нелокальные (используя ключевое слово nonlocal).
Словари (dict)

Словари — часто используемый тип данных в Python. Давайте посмотрим на их изменчивость.

Определим словарь под именем dict с тремя ключами и их значениями. Когда мы распечатаем его, отобразится все его содержимое. Можно распечатать каждое значение словаря отдельно, а также использовать ключи вместо индексов.
Что такое *args и kwargs? (ч.1)

Иногда нельзя предсказать, сколько аргументов получит функция. Чтобы обработать их, используются специальные конструкции *args и
kwargs.

На самом деле названия переменных – args, kwargs – это просто соглашение. Важны здесь только звездочки. Они обозначают сборку аргументов в коллекцию (список или словарь). Одна звездочка предназначена для обычных аргументов, две – для именованных.
Что такое *args и kwargs? (ч.2)

Можно заменить *args на *vars, а kwargs на options или другое слово. Программа будет работать корректно, но другие разработчики могут вас не понять.

Конструкции *args и kwargs можно использовать как самостоятельно, так и в комбинации с любым количеством обычных аргументов. Например, в коде выше первый параметр farg обрабатывается отдельно, а все остальные собираются в коллекцию.
Развиваетесь в области Data Science? Самое время нырнуть в Deep Learning и через 5 месяцев стать специалистом по нейронным сетям.
Обучение в формате живого общения с экспертами на вебинарах и интенсивная практика.

После него вы создадите свою нейронную сеть и будете готовы претендовать на начальные позиции Deep Learning Engineer.

Начинаем погружение 31 августа. Успейте пройти вступительный тест и занять свое место на борту с бонусной скидкой: https://otus.pw/FVSQ/
Очистка строки

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

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

Мы не будем обсуждать всю мощь регулярных выражений, а сосредоточимся на их применении — например, на разделении и замене данных.
Чтобы заработать большие деньги в айти не надо читать унылые it-каналы и бесполезные учебники. Там всё равно советы из 2010 года.

Лучше просто читайте канал Rise. Автор вручную шерстит весь интернет и публикует только актуальные обучения по программированию, It и способам заработка на этом.

1000+ курсов по программированию, как написать свой первый софт за 10 минут и можно ли заработать на программировании без программирования — здесь есть вся необходимая инфа.

Обязательно держать в подписках: Rise
Удаление знаков препинания

Модуль string в Python имеет множество встроенных констант с отдельными наборами символов. string.punctuation — один из них, поэтому мы будем использовать его для очистки строки.

В Python3 string.punctuation — это предварительно инициализированная строка, используемая как строковая константа. В Python string.punctuation даст все наборы знаков препинания.
Translate и Replace

Первый случай — заменить или удалить некоторые символы или подстроки из текста. В Python есть встроенные функции в модуле string, которые выполняют эти задачи.

Метод translate() использует таблицу (которая строится при помощи функции maketrans) для удаления или изменения определенных символов
Функция findall()

Если мы хотим найти все вхождения, в дело вступает функция findall().

Синтаксис: findall(pattern, string, flags=0[optional])

В случае успеха данная функция возвращает список, в котором в виде строк содержатся все искомые вхождения по порядку. Если вхождений нет, то эта функция возвратит пустой список.
Конкатенация строк используя функцию join().

Мы можем использовать функцию join() для конкатенации строк и одновременного добавления разделителя между ними. Это полезная функция, когда мы имеем последовательность строк, например List или tuple строк.

Если вам не нужен разделитель, то можно использовать join() с пустой строкой.
Почему Python — отличный выбор для входа в IT

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

Согласно исследованию GitHub, в 2021 году Python занял 2 место в рейтинге языков программирования. А на HeadHunter открыто более 2000 вакансий, что говорит о популярности не только у разработчиков, но и среди работодателей.

И освоить эту профессию, даже если вы всегда считали себя гуманитарием, можно в SkillFactory. Курсы на 80% состоит из практики в разных форматах, что позволяет найти работу еще во время обучения. Координаторы и менторы будут сопровождать вас на протяжении всего обучения. А в конце обучения вас ждет стажировка в одной из компаний-партнеров, которая пополнит ваше резюме реальным опытом работы!

📌Оставь заявку на бесплатную карьерную консультацию —https://clc.to/NQFT5w
Разделение строки с использованием разделителя

Если вам нужно получить список, в который войдут и разделители (в качестве отдельных элементов), можно разбить строку по шаблону, с использованием регулярных выражений (см. документацию re.split). Когда вы берете шаблон в захватывающие круглые скобки, группа в шаблоне также возвращается как часть результирующего списка.
Что делают OrderedDict и fromkeys()?

OrderedDict это словарь, который запоминает порядок вставки ключей. Если новое вхождение перезаписывает существующее вхождение, исходная позиция вставки остается неизменной.

fromkeys() создает новый словарь и возвращает список ключей. Ключи для нового словаря берутся из seq, а значения — из value (если заданы). Синтаксис метода fromkeys() — fromkeys(seq[, value]).

Параметры:

seq: Это список значений, которые будут использоваться при подготовке ключей для словаря.
value: Опционально; если задать, значение будет установлено в качестве value.
Используем lambda, sum() и map()

Лямбда-функция в Python — это просто функция Python. Но это некий особенный тип с ограниченными возможностями.

Лямбда-функции вместе с sum() и map() также могут решить конкретно эту задачу подсчета общего числа вхождений определенного элемента в строку. Этот метод использует sum() для суммирования всех вхождений, полученных с помощью map().
Используем collection.Counter ()

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

Класс Counter() модуля collections - это подкласс словаря dict для подсчета хеш-объектов (неизменяемых, таких как строки, числа, кортежи и т.д.). Это коллекция, в которой элементы хранятся в виде словарных ключей, а их счетчики хранятся в виде значений словаря.

Счетчик может быть любым целочисленным значением, включая ноль или отрицательное число. Класс collections.Counter() похож на мультимножества в других языках программирования.
Интересуетесь разработкой? Создайте собственный продукт на Python! Ждём вас на онлайн-интенсиве по программированию со 2 по 4 сентября в 21:00 по московскому времени.

Успейте зарегистрироваться бесплатно: 🔜 https://clc.to/tei2UA.

✔️ Изучите основы Python — популярного языка программирования.
✔️ Разработаете сервер для прослушивания подключений.
✔️ Научитесь программировать клиентскую часть для подключения и передачи сообщений.
✔️ Поработаете с библиотеками PyQT, Kivy, wxWidgets, tkinter.
✔️ Пообщаетесь с опытным разработчиком и получите ответы на свои вопросы.

📢 Спикер интенсива — инженер-исследователь научной группы ADASE в Сколтехе, выпускник кафедры системного анализа ВМК МГУ и Техносферы MailRu — Эмиль Богомолов.

🐍 🎁 Пройдите интенсив и получите в подарок электронную книгу Кей Петерсон и Дэвида Колба «Век живи — век учись» от издательства МИФ.

⭐️ Сдайте домашнее задание и станьте обладателем сертификата стоимостью 5 000 рублей на любой курс Skillbox!
Разделение строки-словаря и преобразование ее в списки или словарь

Допустим, у нас есть строка, по сути являющаяся словарем и содержащая пары ключ-значение в виде key => value. Мы хотим получить эти пары в виде списков или настоящего словаря. Вот простой пример, как получить словарь и два списка