⚡️ Полезные команды из модуля itertools
Модуль itertools — это набор функций для эффективной работы с циклами. Сегодня мы рассмотрим бесконечные итераторы.
chain(args) — Возвращает все элементы из первого итерируемого объекта до конца args.
zip_longest(arr1, arr2, fillvalue) — делает то же самое, что и zip (arr1, arr2), но если у arr1 и arr2 разная длина возвращает fillvalue.
compress(arr1, arr2) — "Сохраняет" элемент из arr1, если элемент из arr2 с этим же индексом является True
filterfalse(func, iter) — Работает так же как и filter, но сохраняет значения, только если результат функции false
Модуль itertools — это набор функций для эффективной работы с циклами. Сегодня мы рассмотрим бесконечные итераторы.
chain(args) — Возвращает все элементы из первого итерируемого объекта до конца args.
zip_longest(arr1, arr2, fillvalue) — делает то же самое, что и zip (arr1, arr2), но если у arr1 и arr2 разная длина возвращает fillvalue.
compress(arr1, arr2) — "Сохраняет" элемент из arr1, если элемент из arr2 с этим же индексом является True
filterfalse(func, iter) — Работает так же как и filter, но сохраняет значения, только если результат функции false
⚡️ Оператор with в python
При работе с файлами или сетевыми соединения вам необходимо их закрывать даже в случае появления ошибки.
Вместо использования try или, например, finally, мы можем воспользоваться оператором with.
Оператор вызывает __enter__ у обрабатывающего класса, а в случае появления ошибки или окончания работы с объектом — __exit__.
Также, можно использовать декоратор contextmanager из contextlib для обработки файла используя yield.
#теория #операторы
При работе с файлами или сетевыми соединения вам необходимо их закрывать даже в случае появления ошибки.
Вместо использования try или, например, finally, мы можем воспользоваться оператором with.
Оператор вызывает __enter__ у обрабатывающего класса, а в случае появления ошибки или окончания работы с объектом — __exit__.
Также, можно использовать декоратор contextmanager из contextlib для обработки файла используя yield.
#теория #операторы
⚡️ Работаем с файлами конфигурации
Модуль configparser используется для обработки файлов конфигурации. Он использует базовый язык, похожий на Microsoft Windows INI. Весь функционал можно найти на сайте в документации.
Устанавливать модуль не требуется, он уже идёт вместе с Python 3.
ConfigParser() — это основной класс для работы с файлом конфигурации.
Метод read (filename) считывает значения с файла, write(file_obj) записывает все изменения в переданный файл.
Основные методы в действии можно увидеть на картинке.
#миниурок #configparser
Модуль configparser используется для обработки файлов конфигурации. Он использует базовый язык, похожий на Microsoft Windows INI. Весь функционал можно найти на сайте в документации.
Устанавливать модуль не требуется, он уже идёт вместе с Python 3.
ConfigParser() — это основной класс для работы с файлом конфигурации.
Метод read (filename) считывает значения с файла, write(file_obj) записывает все изменения в переданный файл.
Основные методы в действии можно увидеть на картинке.
#миниурок #configparser
Что выведет этот код?
Anonymous Quiz
50%
[1, None, 'Hi', 'hey']
10%
['H', 'None', 'Hi', 'hey']
34%
[1, None, 'H', 'i', 'hey']
6%
[None', 'H', 'i', 'hey']
⚡️ Работаем с файловыми путями
Модуль pathlib, который установлен в Python по умолчанию, позволяет легко взаимодействовать с путями к файлам.
В библиотеке есть два основных класса — PurePosixPath, для Unix-подобных систем и PureWindowsPath для ОС Windows.
Если вы не желаете писать под определённую операционную систему, вы можете воспользоваться PurePath.
Windows и Unix-подобные системы работают с файловыми система по-разному.
Например Windows не чувствителен к регистру, использует вместо / и имеет разные диски — библиотека это знает, и позаботится об этом за вас.
Учтите, что для копирования файлов вам потребуется другой модуль — shutil.
#миниурок #pathlib
Модуль pathlib, который установлен в Python по умолчанию, позволяет легко взаимодействовать с путями к файлам.
В библиотеке есть два основных класса — PurePosixPath, для Unix-подобных систем и PureWindowsPath для ОС Windows.
Если вы не желаете писать под определённую операционную систему, вы можете воспользоваться PurePath.
Windows и Unix-подобные системы работают с файловыми система по-разному.
Например Windows не чувствителен к регистру, использует вместо / и имеет разные диски — библиотека это знает, и позаботится об этом за вас.
Учтите, что для копирования файлов вам потребуется другой модуль — shutil.
#миниурок #pathlib
⚡️ Обфускация исходного кода. Работаем с pyarmor
Python никак не скрывает свой исходный код и каждый, кто получит файл, может легко его прочитать.
Это может стать серьёзной проблемой в безопасности и, чтобы скрыть и запутать исходник, используют обфускаторы.
Обфускатор — это программа, которая различными способами усложняет скрипт. Меняет названия переменных, потоки и так далее.
Это затрудняет анализ скрипта, сохраняя функциональность. Одна из таких программ — pyarmor.
Установка:
#миниурок #pyarmor
Python никак не скрывает свой исходный код и каждый, кто получит файл, может легко его прочитать.
Это может стать серьёзной проблемой в безопасности и, чтобы скрыть и запутать исходник, используют обфускаторы.
Обфускатор — это программа, которая различными способами усложняет скрипт. Меняет названия переменных, потоки и так далее.
Это затрудняет анализ скрипта, сохраняя функциональность. Одна из таких программ — pyarmor.
Установка:
pip install pyarmor
Пример кода взят из этой статьи, а выше — можете видеть результат.#миниурок #pyarmor
⚡️ Простая проверка данных
Довольно часто случается, что необходимо проверить ссылку или, например, почту на правильность ввода.
Вместо того, что бы писать огромное количество регулярных выражений, можно воспользоваться модулем validators.
Установка:
Библиотека может проверять почту, узнавать, находится ли число между максимальным и минимальным числом, показываться домен, ip и даже mac-адрес.
Подробнее — в документации.
#мини_урок #validators
Довольно часто случается, что необходимо проверить ссылку или, например, почту на правильность ввода.
Вместо того, что бы писать огромное количество регулярных выражений, можно воспользоваться модулем validators.
Установка:
pip install validators
Библиотека может проверять почту, узнавать, находится ли число между максимальным и минимальным числом, показываться домен, ip и даже mac-адрес.
Подробнее — в документации.
#мини_урок #validators
⚡️ Задача на собеседование: скрытие символов банковской карты
Условие:
На вход идёт строка с номером карты. Она может иметь внутри себя пробелы, что функция и должна предусматривать. Результат — 12 символов * и 4 последних символа от входной строки.
Пример:
hidecard("3459 0054 1234 6674") → ************6674
hidecard("1234567890987654") → ************7654
📌 Пишите ваше решение в комментариях. Решение будет через 4 часа на этом канале.
#Задача_с_собеседования
Условие:
На вход идёт строка с номером карты. Она может иметь внутри себя пробелы, что функция и должна предусматривать. Результат — 12 символов * и 4 последних символа от входной строки.
Пример:
hidecard("3459 0054 1234 6674") → ************6674
hidecard("1234567890987654") → ************7654
📌 Пишите ваше решение в комментариях. Решение будет через 4 часа на этом канале.
#Задача_с_собеседования
⚡️ Ищем файлы по шаблону
В этом нам поможет простой модуль glob. Он разыскивает файлы по паттерну принятой в Unix-системе.
Библиотека является встроенной, так что установка не требуется.
Чаще всего употребляется два знака — * (на его месте может быть неограниченное количество символов) и ? (только один символ).
Подробнее все шаблоны можно рассмотреть на этом сайте.
Также, если вы импортируете pathlib, можете воспользоваться методом pathlib.glob, который выполняет ту же самую функцию.
#миниурок #glob
В этом нам поможет простой модуль glob. Он разыскивает файлы по паттерну принятой в Unix-системе.
Библиотека является встроенной, так что установка не требуется.
Чаще всего употребляется два знака — * (на его месте может быть неограниченное количество символов) и ? (только один символ).
Подробнее все шаблоны можно рассмотреть на этом сайте.
Также, если вы импортируете pathlib, можете воспользоваться методом pathlib.glob, который выполняет ту же самую функцию.
#миниурок #glob