Python академия
7.74K subscribers
2.27K photos
4 videos
265 links
Python академия. Учи Python быстро и легко. По всем вопросам @evgenycarter
Download Telegram
Функция findall()

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

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

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

Подписывайтесь на канал 👉@pythonofff
Как парсить сайты с авторизацией на python?

Для парсинга сайтов с авторизацией, Вы можете воспользоваться selenium

Посмотреть пример в онлайн редакторе.

Подписывайтесь на канал 👉@pythonofff
Обработка строки

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

Перечислим наиболее полезные методы:

capitalize() - первая буква большая, остальные маленькие
strip() - удаление пробелов в начале и конце
center(int, chr='') - отцентрирует текст, int - нужное кол-во символов в строке, а chr - символ для добавления в начало и конец
swapcase() - заглавные буквы в прописные, маленькие в большие
lower() - преобразует к нижнему регистру
upper() - преобразует к верхнему регистру

При написании нейронок и ботов обязательно приводите все к нижнему регистру с помощью lower(). При написании ботов часто использую center(), для красивого вывода.

Подписывайтесь на канал 👉@pythonofff
Работа с процессами в Python

С появлением многоядерных процессоров стала общеупотребительной практика распространять нагрузку на все доступные ядра. Существует два основных подхода в распределении нагрузки: использование процессов и потоков. О первом мы как раз сейчас и поговорим.

Подробнее

Подписывайтесь на канал 👉@pythonofff
Модуль shutil

Очень смешное название, но библиотека является мощным инструментом для обработки файлов. В прошлом посте говорилось о модуль os. Надо учитывать, что многие задачи решить через него можно, но придется постараться.

Программисты комбинируют os и shutil для достижения наиболее красивого и эффективного кода.

shutil.copyfileobj(fsrc, fdst) - копирует один файл в другой.

shutil.copymode(fsrc, fdst) - копирует права доступа из одного файла в другой.

shutil.copystat(fsrc, fdst) - копирует дату последнего доступа и изменения из одного файла в другой.

Библиотека позволяет так же работать с архивами shutil.get_archive_formats(), чтобы узнать доступные для работы архивы.

Подписывайтесь на канал 👉@pythonofff
Модуль zipfile

Как говорилось ранее с zip может работать модуль shutil, но zipfile более многофункционален. С другой стороны он не так универсален и работает только с зипами. За все надо платить, не существует идеального способа для всего.

Для начала надо из zipfile импортировать ZipFile. И открыть файл ZipFile(file).

printdir() - вывод списка содержимого текстом для печати.

namelist() - вывод списка фалов списком.

open() - открыть файл внутри архива, далее работа проходит аналогично работе фалов.

Для практики на картинке показана программа выводящая красивый вложенный список файлов находящихся в архиве.

Больше возможностей можно узнать через help() или документацию.

Подписывайтесь на канал 👉@pythonofff
Как перевести символ в ascii на python?

Вы можете использовать метод .ord() для перевода символа в ascii.

char = "T"

print(ord(char))


Подписывайтесь на канал 👉@pythonofff
Итерирование с использованием функции enumerate

Функция range позволяет получить только индексы элементов списка. Функция enumerate генерирует кортежи, состоящие из двух элементов – индекса элемента и самого элемента. Эти кортежи можно распаковать еще в заголовке for
Получается короткий и понятный код!
В примере разберем как извлечь из списка элементы и их индекс, рис.1.

Еще одной полезной и крутой фишкой этой функции будет легкое создания счетчика. Более того, мы можем установить первоначальное значение счетчика, рис. 2.

Подписывайтесь на канал 👉@pythonofff
Сборка exe файлов - pyinstaller

Если вы просто скопируете проект, то он не будет работать на других системах где нет установленного Python, а если есть, то возможно там отсутствуют нужные библиотеки. Но можно создать исполняемый файл exe, который запустится и без Python. Необходимо установить pyinstaller:

install pyinstaller

Затем перейти в командную строку, и перейти в нужную директорию с помощью команды cd. Далее напишем такой код:

--onefile --noconsole main.py

--onefile - означает, что будет только один исполняемый файл.

--noconsole - консоль не будет запускаться при открытии

main.py - файл, при запуске которого начинает работать ваша программа

В папке dist будет лежать нужный файл, остальные созданные папки можно удалить

Внимание! С помощью данного метода не получится скрыть ваш код, так же вы не получите прироста в скорости работы программы.

Подписывайтесь на канал 👉@pythonofff
Как перевести массив в список на python?

Вы можете использовать метод .tolist() для перевода массива в список.

Подписывайтесь на канал 👉@pythonofff
Разница между == и is

Недавно в чате наши подписчики затрагивали эту тему, поэтому мы решили разложить всё по полочкам, чтобы в дальнейшем не возникало вопросов.

Итак, оператор == проверяет равенство значений двух объектов. А оператор is в свою очередь проверяет идентичность самих объектов. Его используют, чтобы удостовериться, что переменные указывают на один и тот же объект в памяти.

Однако Python в целях производительности кеширует короткие строки и малые целые числа, поэтому возможны некоторые казусы, как в примере.

Подписывайтесь на канал 👉@pythonofff
Как округлить до тысячных в python?

Вы можете использовать round()

Подписывайтесь на канал 👉@pythonofff
Как создать массив из n элементов в python?

Вы можете использовать цикл и метод .append(). Так же для примера можно использовать модуль random.

Подписывайтесь на канал 👉@pythonofff
Библиотека FuzzyWuzzy

Интересная и полезная библиотека поиска совпадений в тексте. Очень поможет вам при работе над общающимися ботами: голосовыми или текстовыми помощниками.

Разумеется, это один из инструментов, всегда можно использовать другой, но я лично пользуюсь этим.

Библиотеку следует установить:

install fuzzywuzzy

Подписывайтесь на канал 👉@pythonofff
Избегайте неоправданных циклов с коллекциями

Предположим, что требуется создать новый список, элементами которого будут являться квадраты чисел данного списка. Большинство сразу же напишут простенький цикл for.

Но в этом и проблема. Такой подход займет как минимум три строчки: объявление новой переменной, создание цикла и инструкции внутри него. При этом также снижается скорость работы скрипта.

На прикрепленной картинке я привел две достойные альтернативы, а именно использование генератора списков и функции map. В обоих вариантах не только код становится короче и выразительнее, но и заметно повышается производительность.

Подписывайтесь на канал 👉@pythonofff
"Быстрый" контейнер deque

Встроенных списков в Python иногда может не хватать, поэтому покажем одну хорошую альтернативу. Deque может быть реализован c помощью модуля collections.

Deque предпочтительнее, чем обычный список, в тех случаях, когда нам нужны более быстрые операции добавления и вытягивания элементо из обоих концов контейнера, поскольку deque обеспечивает линейную сложность O(1) для операций добавления и выталкивания по сравнению со списком, у которого сложность по времени для тех операций составляет O(n).

Также для deque есть возможность использовать стандартные функции по типу sum, min, max и тому подобные.

Подписывайтесь на канал 👉@pythonofff
Как проверить существование переменной в Python?

Вы можете использовать in locals() или in globals(), чтобы проверить переменная существует в Python, разница только:

in locals() проверяет если переменная объявлена в локальной зоне видимости
in globals() проверяет если переменная объявлена в глобальной зоне видимости

Подписывайтесь на канал 👉@pythonofff
Контекстные менеджеры

Контекстные менеджеры позволяют задать поведение при работе с конструкцией with: при входе и выходе из блока. Это упрощает работу с ресурсами в части их захвата и освобождения; транзакциями, когда нужно либо полностью закончить транзакцию, либо откатить ее целиком.

Простейшей функцией, использующей данный принцип является функция open. Каждый раз, когда мы открываем файл, нам необходимо его закрыть, чтобы вытолкнуть выходные данные на диск (на самом деле Python вызывает метод close автоматически, но явное его использование является хорошим тоном).

Чтобы каждый раз не вызывать метод close мы можем воспользоваться контекстным менеджером функции open, который автоматически закроет файл после выхода из блока.

Подписывайтесь на канал 👉@pythonofff
Вывод значения по умолчанию для отсутствующего ключа словаря

Если вы обратитесь к несуществующему ключу словаря, то это вызовет исключение. Избежать этого можно, вызывая метод get. В примере метод выдает None (по умолчанию) или заданное значение аргумента.

Подписывайтесь на канал 👉@pythonofff
Декораторы

Очень важная тема, с помощью декорирования можно писать очень удобные логи или существенно расширять функции.

Многие библиотеки работают с использованием декораторов: Flask и aiogram хорошие тому примеры.

Мы показываем лишь простой пример, возможности куда шире. Позже покажем пример использования с упоминаемыми выше библиотеками.

Подписывайтесь на канал 👉@pythonofff