Ещё вчера они отвечали за код и технологии, а сегодня в их подчинении специалисты, к которым никто не приложил инструкцию. Да, быть начинающим управленцем в IT — рискованно, но интересно. Открывается много новой информации и определений.
Насчёт определений — в карточках собрали несколько ключевых, которые познакомят вас с профессией руководителя в IT поближе. А по поводу новой информации: в Практикуме появился курс по управлению командой разработки с воркшопами, личными консультациями и интерактивным учебником.
Пройдите первый бесплатный урок
Насчёт определений — в карточках собрали несколько ключевых, которые познакомят вас с профессией руководителя в IT поближе. А по поводу новой информации: в Практикуме появился курс по управлению командой разработки с воркшопами, личными консультациями и интерактивным учебником.
Пройдите первый бесплатный урок
Делаем планировщик задач
К моему удивлению, далеко не все знают про пакет
Основной его плюс в том, что он максимально интуитивный и имеет гибкий функционал. А еще
Здесь на самом деле даже объяснять особо нечего, логика методов в этом пакете понятна на примерах.
#schedule
К моему удивлению, далеко не все знают про пакет
schedule
, который позволяет планировать задачи и повторять их через промежуток времени. Основной его плюс в том, что он максимально интуитивный и имеет гибкий функционал. А еще
schedule
не требует внешних зависимостей и сам в целом легковесный. Здесь на самом деле даже объяснять особо нечего, логика методов в этом пакете понятна на примерах.
#schedule
Превращаем PDF в текст
Думаю, все периодические работают с PDF-документами. И зачастую это ручная и скучная работа. Но Python может автоматизировать даже такую рутинную задачу.
Модуль
Кстати, здесь ещё интересно то, что исходный код модуля написан на C++. Поэтому есть небольшая вероятность, что придётся повоевать с зависимостями.
#pdftotext
Думаю, все периодические работают с PDF-документами. И зачастую это ручная и скучная работа. Но Python может автоматизировать даже такую рутинную задачу.
Модуль
pdftotext
создан именно для работы с документами в PDF формате. Устанавливается он через пакетный менеджер pip
, а использовать его проще простого. Все основные операции представлены на картинке выше. Кстати, здесь ещё интересно то, что исходный код модуля написан на C++. Поэтому есть небольшая вероятность, что придётся повоевать с зависимостями.
#pdftotext
Интересная пасхалка
Модуль
Но будет вызвано исключение, которое говорит "not a chance", что означает "ни единого шанса". Однако есть ещё один интересный момент, а именно — исходный код этого модуля.
Оказывается, интерпретатор CPython сначала запускает файл
#пасхалки
Модуль
__future__
позволяет подключать функционал из будущих версий языка. Например, можно попробовать импортировать фигурные скобки как в си-подобных языках.Но будет вызвано исключение, которое говорит "not a chance", что означает "ни единого шанса". Однако есть ещё один интересный момент, а именно — исходный код этого модуля.
Оказывается, интерпретатор CPython сначала запускает файл
future.c
, когда встречается импорт этого модуля. А само это исключение реализовано на этой строчке.#пасхалки
Аргументы и параметры командной строки
Для обработки передаваемых аргументов и создания удобный интерфейс командной строки в python есть отличный модуль
Для начала нам нужно создать объект парсера
Первым параметром
После добавления всех аргументов, нам нужно их спарсить с помощью метода
#argparse
Для обработки передаваемых аргументов и создания удобный интерфейс командной строки в python есть отличный модуль
argparse
.Для начала нам нужно создать объект парсера
ArgumentParser
, в который мы уже сможем добавить аргументы с нужными параметрами с помощью метода add_argument
.Первым параметром
add_argument
принимает либо имя обязательного позиционного аргумента, либо список опционального аргумента (опциональный аргумент идентифицируется через -
). Также у add_argument
есть множество необязательных опциональных параметров для работы с передаваемым значением аргумента, о них можете почитать в данной статье.После добавления всех аргументов, нам нужно их спарсить с помощью метода
parse_args
, на выходе мы получим объект со всеми содержащимися аргументами.#argparse
Делегирующие генераторы
Давайте создадим простенькую генераторную функцию
А также ещё одну генераторную функцию
Цикл, который можно написать в
Грубо говоря, такая конструкция является неким туннелем передачи данных туда и обратно. В нашей ситуации
#генераторы
Давайте создадим простенькую генераторную функцию
subgen
, которая будет возвращать числа от 0 до переданного аргумента.А также ещё одну генераторную функцию
delegator
, которая будет возвращать числа из итерируемого объекта source
, который передадим в качестве аргумента.Цикл, который можно написать в
delegator
, можно заменить всего лишь одной строчкой. То есть yield from
заменяет цикл for
, в котором только возвращаются значения через yield
.Грубо говоря, такая конструкция является неким туннелем передачи данных туда и обратно. В нашей ситуации
delegator
можно назвать делигирующим генератором, а subgen
подгенератором.#генераторы
Превью из длинного текста
Допустим, у нас есть какой-то длинный текст в виде строки и надо сделать превью этого текста, например, для сайта. Первое, что приходит на ум – использовать слайсинг строк.
Но, как видите, текст оборвался на полуслове, поэтому такой вариант отпадает. Такую проблему хорошо решает метод
Первым аргументом передается строка, вторым указываем количество символов, которое должен содержать результат. Также третьим аргументом можно передать заготовку, которая будет вставляться в конце обрезанной строки.
#строки #textwrap
Допустим, у нас есть какой-то длинный текст в виде строки и надо сделать превью этого текста, например, для сайта. Первое, что приходит на ум – использовать слайсинг строк.
Но, как видите, текст оборвался на полуслове, поэтому такой вариант отпадает. Такую проблему хорошо решает метод
shorten
из модуля textwrap
. Первым аргументом передается строка, вторым указываем количество символов, которое должен содержать результат. Также третьим аргументом можно передать заготовку, которая будет вставляться в конце обрезанной строки.
#строки #textwrap
Временные файлы
В стандартной библиотеке Python есть модуль
Функция
Созданный временный файл будет автоматически удален по закрытию файла или при выходе из контекстного менеджера.
Также другие процессы и приложения не смогут получить доступ к этому временному файлу.
#tempfile
В стандартной библиотеке Python есть модуль
tempfile
, который содержит классы и методы для корректной работы со временными файлами и директориями.Функция
TemporaryFile
создает временный файл в системной директории и возвращает файлоподобный объект.Созданный временный файл будет автоматически удален по закрытию файла или при выходе из контекстного менеджера.
Также другие процессы и приложения не смогут получить доступ к этому временному файлу.
#tempfile
Оператор неравенства и Дядя Бэрри
Вспомним немного историю: 1 апреля 2009 года выпустили PEP 401, в котором говорилось, что Гвидо ван Россум покидает команду Python.
На его замену должен был прийти Barry Warsaw, который имел официальный статус Friendly Language Uncle For Life (FLUFL) — в переводе, дружелюбный дядя языка на всю жизнь.
И этот Дядя Бэрри предложил заменить "противный" знак неравенства
Для этого можно импортировать
Это всё, конечно же, было первоапрельской шуткой, но оператор
#пасхалка
Вспомним немного историю: 1 апреля 2009 года выпустили PEP 401, в котором говорилось, что Гвидо ван Россум покидает команду Python.
На его замену должен был прийти Barry Warsaw, который имел официальный статус Friendly Language Uncle For Life (FLUFL) — в переводе, дружелюбный дядя языка на всю жизнь.
И этот Дядя Бэрри предложил заменить "противный" знак неравенства
!=
на <>
. Изменения обещали выпустить в последующих версиях, но его можно было протестировать и раньше времени.Для этого можно импортировать
barry_as_FLUFL
из пакета __future__
. Результат можете посмотреть на картинке сверху.Это всё, конечно же, было первоапрельской шуткой, но оператор
<>
всё ещё доступен и является некой пасхалкой.#пасхалка
Выделение базовой части слов
При обработки естественного языка в машинном обучении мы сталкиваемся с множеством форм слова, например, демократия и демократизация. Для машин очень важно понимать, что эти разные слова имеют одинаковую базовую форму.
Таким образом, было бы полезно при анализе текста извлекать базовые формы слов. Можно сказать, что для процесса выделения базовой части слова необходимо обрезать концы слов.
В модуле Python NLTK (Natural Language Toolkit Package) есть различные пакет, связанные с данным процессом выделения базовой части и использующие разные алгоритмы.
Один за пакетов,
#snowball
При обработки естественного языка в машинном обучении мы сталкиваемся с множеством форм слова, например, демократия и демократизация. Для машин очень важно понимать, что эти разные слова имеют одинаковую базовую форму.
Таким образом, было бы полезно при анализе текста извлекать базовые формы слов. Можно сказать, что для процесса выделения базовой части слова необходимо обрезать концы слов.
В модуле Python NLTK (Natural Language Toolkit Package) есть различные пакет, связанные с данным процессом выделения базовой части и использующие разные алгоритмы.
Один за пакетов,
snowball
, использует алгоритм соответственно Snowball
, разработанный Мартином Портером. Алгоритм поддерживает большинство популярных языков. Подробнее об алгоритме можно почитать тут.#snowball
Протоколы
Термины "протокол итератора" или "протокол дескрипторов" уже привычны и используются давно. Но теперь можно описывать протоколы в виде кода и проверять их соответствие на этапе статического анализа.
Протокол описывается как обычный класс, наследующийся от
Хоть это и не совсем интерфейсы, но все же классная штука. Еще важно, что протоколы, как и все остальные фишки аннотаций типов, используются в основном со статически типизированным
#typing #аннотации
Термины "протокол итератора" или "протокол дескрипторов" уже привычны и используются давно. Но теперь можно описывать протоколы в виде кода и проверять их соответствие на этапе статического анализа.
Протокол описывается как обычный класс, наследующийся от
Protocol
. Он может иметь методы (в том числе с реализацией) и поля. Реальные классы, реализующие протокол могут наследоваться от него, но это не обязательно, как показано в примере. Хоть это и не совсем интерфейсы, но все же классная штука. Еще важно, что протоколы, как и все остальные фишки аннотаций типов, используются в основном со статически типизированным
mypy
. #typing #аннотации
Выделение базовой части слов
При обработки естественного языка в машинном обучении мы сталкиваемся с множеством форм слова, например, демократия и демократизация. Для машин очень важно понимать, что эти разные слова имеют одинаковую базовую форму.
Таким образом, было бы полезно при анализе текста извлекать базовые формы слов. Можно сказать, что для процесса выделения базовой части слова необходимо обрезать концы слов.
В модуле Python NLTK (Natural Language Toolkit Package) есть различные пакет, связанные с данным процессом выделения базовой части и использующие разные алгоритмы.
Один за пакетов,
#snowball
При обработки естественного языка в машинном обучении мы сталкиваемся с множеством форм слова, например, демократия и демократизация. Для машин очень важно понимать, что эти разные слова имеют одинаковую базовую форму.
Таким образом, было бы полезно при анализе текста извлекать базовые формы слов. Можно сказать, что для процесса выделения базовой части слова необходимо обрезать концы слов.
В модуле Python NLTK (Natural Language Toolkit Package) есть различные пакет, связанные с данным процессом выделения базовой части и использующие разные алгоритмы.
Один за пакетов,
snowball
, использует алгоритм соответственно Snowball
, разработанный Мартином Портером. Алгоритм поддерживает большинство популярных языков. Подробнее об алгоритме можно почитать тут.#snowball
Получаем текст с картинки
У Google есть система Tesseract, которая позволяет парсить текст с картинок с помощью оптического распознавания символов.
И в качестве обертки над их системой, был создан пакет
Для того, чтобы получить текст с картинки, нужно вызвать метод
Еще важно, что для открытия картинок рекомендуется использовать
#pytesseract
У Google есть система Tesseract, которая позволяет парсить текст с картинок с помощью оптического распознавания символов.
И в качестве обертки над их системой, был создан пакет
pytesseract
, который максимально удобно и легко использовать. Для того, чтобы получить текст с картинки, нужно вызвать метод
image_to_string
. Если вас интересует текст на русском, то следует указать аургмент lang
как 'rus'
. Еще важно, что для открытия картинок рекомендуется использовать
pillow
, хоть и имеется возможность просто указать путь к файлу в виде строки. #pytesseract