⚡️ Работаем с логами
Для этого в Python существует удобный модуль logging, позволяющий управлять логами в пару строк.
О том, какие уровни важности использовать, вы можете почитать в HOWTO, а подробнее о функционале модуля — в документации.
#миниурок #logging
Для этого в Python существует удобный модуль logging, позволяющий управлять логами в пару строк.
logging.getLogger(name=None)
— возвращает экземпляр логера на основе имени. Может быть полезна при разработке модулей.logging.basicConfig(**kwargs)
— позволяет задать настройки модулю, например, имя файла (filename), формат записи (format), уровень важности (level).debug()
, info()
, warning()
, error()
, critical()
— позволяют записывать информацию в логер на определённом уровне важности.О том, какие уровни важности использовать, вы можете почитать в HOWTO, а подробнее о функционале модуля — в документации.
#миниурок #logging
⚡️ Задачка с собеседования | #Hard
Условие:
Вам необходимо проверить, в правильном ли порядке расставлены {}, (), [], <>. Вместе с ними может идти и другой текст, поэтому вам стоит заняться фильтрацией строки.
Примеры:
valid_bracket("(some_data)")
valid_bracket("() [ww]1{}<>")
valid_bracket("< [ ( { })]>")
valid_bracket("(]")
valid_bracket("([9)]")
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
Условие:
Вам необходимо проверить, в правильном ли порядке расставлены {}, (), [], <>. Вместе с ними может идти и другой текст, поэтому вам стоит заняться фильтрацией строки.
Примеры:
valid_bracket("(some_data)")
valid_bracket("() [ww]1{}<>")
valid_bracket("< [ ( { })]>")
valid_bracket("(]")
valid_bracket("([9)]")
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
⚡️ Очередь с приоритетом
Это — разновидность очередей, в которой у каждого элемента есть свой приоритет. Модуль heapq реализует такую возможность, используя кучи — бинарные деревья, у которых родительский объект имеет значение, меньшее или равное любому из его дочерних узлов.
#миниурок #heapq
Это — разновидность очередей, в которой у каждого элемента есть свой приоритет. Модуль heapq реализует такую возможность, используя кучи — бинарные деревья, у которых родительский объект имеет значение, меньшее или равное любому из его дочерних узлов.
heappush(heap, value)
— добавляет value в heap, сохраняя инвариантность кучи.heappop(heap)
— возвращает наименьшее значение из heap. heapify(x)
— превращает итерируемый объект x в кучу.nsmallest(n, iter)
, nlargest(n, iter)
— позволяют взять n-ное количество минимальных/максимальных элементов из iter.#миниурок #heapq
Что выведет код выше?
Anonymous Quiz
16%
Hello world
13%
world Hello
33%
eHllo world
32%
Ошибку
6%
Узнать ответ
⚡️ Красивый вывод данных
Если вам приходится работать с выводом списков или словарей, то вы можете упростить себе работу, использовав pprint.
indent определяет количество отступов перед объектами, а width — ширину вывода. depth — сколько объектов необходимо рекурсивно раскрывать, а stream — куда записывать все данные (по умолчанию sys.stdout).
#миниурок #pprint
Если вам приходится работать с выводом списков или словарей, то вы можете упростить себе работу, использовав pprint.
PrettyPrinter(indent=1, width=80, depth=None, stream=None)
— Класс, отвечающий за перевод данных в красивый формат. indent определяет количество отступов перед объектами, а width — ширину вывода. depth — сколько объектов необходимо рекурсивно раскрывать, а stream — куда записывать все данные (по умолчанию sys.stdout).
pprint.pprint(object, ...)
— функция, упрощающая работу с классом. Принимает object, который необходимо вывести и те же параметры, что и PrettyPrinter.#миниурок #pprint
⚡️ Задачка с собеседования | #Medium
Условие:
Вам необходимо найти самый длинный префикс среди полученного списка строк. Строки состоят только из английских букв в нижнем регистре.
Примеры:
longest_prefix(['flower', 'flow', 'flight']) -> 'fl'
longest_prefix(['car', 'cir']) -> 'c'
longest_prefix(['sol', 'ution']) -> ''
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
Условие:
Вам необходимо найти самый длинный префикс среди полученного списка строк. Строки состоят только из английских букв в нижнем регистре.
Примеры:
longest_prefix(['flower', 'flow', 'flight']) -> 'fl'
longest_prefix(['car', 'cir']) -> 'c'
longest_prefix(['sol', 'ution']) -> ''
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
⚡️ Файлы конфигурации
Вряд ли клиент захочет лезть в код, чтобы поменять порт сервера, поэтому многие программисты создают файлы конфигурации. Работать с ними можно с помощью модуля configparser.
Брать информацию можно используя квадратные скобки или, лучше, методом
Если вы изменили какие-то данные и хотите их сохранить, впишите метод
#миниурок #configparser
Вряд ли клиент захочет лезть в код, чтобы поменять порт сервера, поэтому многие программисты создают файлы конфигурации. Работать с ними можно с помощью модуля configparser.
ConfigParser()
— основной класс для работы с конфигами. Его можно оставить так, а можно загрузить данные, используя метод read(filename)
, который принимает имя файла.Брать информацию можно используя квадратные скобки или, лучше, методом
get(key, default=None)
.Если вы изменили какие-то данные и хотите их сохранить, впишите метод
write(file)
, который принимает IO файл.#миниурок #configparser
Что выведет код выше?
Anonymous Quiz
45%
0 1 2 3 в одну строку
19%
0 1 2 3 в несколько строк
11%
1 2 3 4 в одну строку
17%
Ошибку
8%
Узнать ответ
Data Science — это про настоящее.
Алгоритмы Google уже помогают врачам на 9,4% точнее определять болезни. Беспилотники от Waymo сами передвигаются по дорогам, а нейронные сети вычисляют преступников в толпе.
Это востребовано. В 2015-м технологии Big Data использовали только 17% компаний. В 2020-м — уже 55%.
Это увлекательно. Тут нет рутинных задач. Вы будете работать на стыке IT и аналитики: предсказывать события и прогнозировать рост прибыли на основе данных.
Это перспективно. По данным HH, в России 600+ компаний ищут дата-сайентистов, включая Сбербанк, Яндекс и «Тинькофф».
Data Science реально изучить. Стать специалистом по анализу данных и machine learning можно на курсе «Профессия Data Scientist PRO» от Skillbox.
Каждый, кто купит в ноябре курс, который участвует в ЧП, получит три скидки от партнеров:
• Asus — скидка 10% на ноутбуки.
• Литрес — 25% на все книги + 2 книги в подарок из подборки.
• Clinique — скидка 40% на все, кроме новогодних коллекций.
Переходите: https://clc.to/3TPK5w и приобретайте курс со скидкой до 60%
Алгоритмы Google уже помогают врачам на 9,4% точнее определять болезни. Беспилотники от Waymo сами передвигаются по дорогам, а нейронные сети вычисляют преступников в толпе.
Это востребовано. В 2015-м технологии Big Data использовали только 17% компаний. В 2020-м — уже 55%.
Это увлекательно. Тут нет рутинных задач. Вы будете работать на стыке IT и аналитики: предсказывать события и прогнозировать рост прибыли на основе данных.
Это перспективно. По данным HH, в России 600+ компаний ищут дата-сайентистов, включая Сбербанк, Яндекс и «Тинькофф».
Data Science реально изучить. Стать специалистом по анализу данных и machine learning можно на курсе «Профессия Data Scientist PRO» от Skillbox.
Каждый, кто купит в ноябре курс, который участвует в ЧП, получит три скидки от партнеров:
• Asus — скидка 10% на ноутбуки.
• Литрес — 25% на все книги + 2 книги в подарок из подборки.
• Clinique — скидка 40% на все, кроме новогодних коллекций.
Переходите: https://clc.to/3TPK5w и приобретайте курс со скидкой до 60%
⚡️ Аннотация типов. Часть 1
Поскольку Python — это язык с динамической типизацией, то не всегда программа может просчитать, что будет на входе функции.
Тогда на помощь приходит аннотация, говорящая, что на вход должен прийти вот такой тип.
И оно никак не влияет на работу программы, как понятно из примера выше. Оно несёт смысл только для программистов и IDE.
Создаются они с помощью ":" после имени переменной. А возвращаемое значение функции — с помощью "->" в конце её определения.
Если вам стало интересно, можете посетить страницу документации.
#теория
Поскольку Python — это язык с динамической типизацией, то не всегда программа может просчитать, что будет на входе функции.
Тогда на помощь приходит аннотация, говорящая, что на вход должен прийти вот такой тип.
И оно никак не влияет на работу программы, как понятно из примера выше. Оно несёт смысл только для программистов и IDE.
Создаются они с помощью ":" после имени переменной. А возвращаемое значение функции — с помощью "->" в конце её определения.
Если вам стало интересно, можете посетить страницу документации.
#теория
⚡️ Задачка с собеседования | #Medium
Условие:
Вам необходимо узнать, какой тип аннотирован у переменной. На вход идёт строка с определением переменной, на выход — строка-тип. Будут использоваться самые примитивные типы (str, int, float). Если тип не определён, возвращает None.
Примеры:
get_annotation("a: str = 'b: int = 1'") -> 'str'
get_annotation('a: int') -> 'int'
get_annotation("a = 'b: int = 1'") -> None
get_annotation('a = 1') -> None
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
Условие:
Вам необходимо узнать, какой тип аннотирован у переменной. На вход идёт строка с определением переменной, на выход — строка-тип. Будут использоваться самые примитивные типы (str, int, float). Если тип не определён, возвращает None.
Примеры:
get_annotation("a: str = 'b: int = 1'") -> 'str'
get_annotation('a: int') -> 'int'
get_annotation("a = 'b: int = 1'") -> None
get_annotation('a = 1') -> None
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
⚡️ Универсальный инструмент, пользу которого оценит любой участник этого канала.
В какой бы сфере IT вы ни были заняты, потребность в быстром, удобном, а главное, в большинстве своем, бесплатном графическом редакторе рано или поздно возникает у всех.
Один из наиболее подходящих по всем вышеперечисленным критериям сервис - это Canva. Если вы еще не пробовали его в действии, пришло время это исправить!
👉 Во-первых канва - это универсально. Вы сможете нарисовать логотип, баннер, персональную визитку, смонтровать рекламное видео для сторис или выбрать подходящее вашему контенту бесплатное стоковое фото - все, для любой сферы вашей деятельности в одном месте.
👉 Во-вторых, не обязательно ничего скачивать или платить за подписку. Все самые необходимые инструменты доступны бесплатно в веб-версии. А еще есть удобный софт для телефона, ноутбука или планшета, на любой ОС.
👉 В-третьих, не нужно быть графическим дизайнером, чтобы начать работу. Все редактирование очень интуитивно, на базе интерфейса drag-n-drop.
А еще любой проект можно сохранить и вернуться к нему в любое удобное время, с любого другого устройства. Отличная новость для тех, кто ценит мобильность и свое время.
Хотите попробовать? Переходите по ссылке — https://fas.st/KB401
В какой бы сфере IT вы ни были заняты, потребность в быстром, удобном, а главное, в большинстве своем, бесплатном графическом редакторе рано или поздно возникает у всех.
Один из наиболее подходящих по всем вышеперечисленным критериям сервис - это Canva. Если вы еще не пробовали его в действии, пришло время это исправить!
👉 Во-первых канва - это универсально. Вы сможете нарисовать логотип, баннер, персональную визитку, смонтровать рекламное видео для сторис или выбрать подходящее вашему контенту бесплатное стоковое фото - все, для любой сферы вашей деятельности в одном месте.
👉 Во-вторых, не обязательно ничего скачивать или платить за подписку. Все самые необходимые инструменты доступны бесплатно в веб-версии. А еще есть удобный софт для телефона, ноутбука или планшета, на любой ОС.
👉 В-третьих, не нужно быть графическим дизайнером, чтобы начать работу. Все редактирование очень интуитивно, на базе интерфейса drag-n-drop.
А еще любой проект можно сохранить и вернуться к нему в любое удобное время, с любого другого устройства. Отличная новость для тех, кто ценит мобильность и свое время.
Хотите попробовать? Переходите по ссылке — https://fas.st/KB401
Что выведет этот код?
Anonymous Quiz
5%
- 1 0 1
3%
- 1 1 2
9%
1 2 -1
39%
0 1 -1
35%
Ошибку
8%
Узнать ответ
⚡️ Работаем с архивами
Если вам необходимо считать данные с zip архива, то можете воспользоваться модулем zipfile.
Поскольку модуль работает с файловой системой, его необходимо закрывать, используя
Если вам необходимо считать данные с zip архива, то можете воспользоваться модулем zipfile.
ZipFile(file, mode='r')
— открывает архив для чтения/записи (зависит от mode). После этого вы можете проводить с ним такие операции:ZipFile.open(name, mode='r')— позволяет открыть файл внутри архива.
ZipFile.extractall(path=None)
— извлекает все файлы и папки в директорию path.Поскольку модуль работает с файловой системой, его необходимо закрывать, используя
close()
или оператор with
.