#python python... PYTHON 🔛 🚀
11 subscribers
914 photos
7 videos
158 files
1.54K links
Download Telegram
Forwarded from Python Community
⚡️ Оператор моржа

Данный оператор доступен с версии Python 3.8. Он позволяет записывать данные в переменную и выполнять определённое действие.

С ним можно избежать повторного использования одной и той же функции.

Записывается оператор моржа так var_name := value, где := это и есть оператор. Подробнее о нём можете почитать в PEP 572.

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

#теория
Forwarded from Python Community
⚡️ Выполняем команды прямо в терминале

sh
— интересный модуль с открытым исходным кодом, позволяющий запускать команды из системы Python. Он намного проще, чем subprocess.

Установка: pip install sh

Данная библиотека выполняет команду, записанную как функцию, в скобочках получает аргументы этой команды, а после выполнения — возвращает результат работы или записывает его в _out.

Вы также можете перенаправлять вывод, «запечатывать» команды и создавать подкоманды — в этом и заключается преимущество модуля.

#миниурок #sh
Forwarded from Python Community
⚡️ Обрабатываем аргументы командной строки

argparse
— встроенный модуль, позволяющий обработать данные, переданные при запуске скрипта из терминала.

На самом деле, argparse, является обёрткой над sys.argv и, если у вас простенький скрипт, который принимает 1-2 аргумента, то я советую получать аргументы напрямую из sys.

А если вам нужно больше возможностей, то просто создайте класс ArgumentParser, который сгенерирует базовые команды (-h, --help), описание и название программы.

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

#миниурок #argparse
Forwarded from Python Community
⚡️ Системный модуль в Python

sys — предустановленный модуль, обеспечивающий доступ к функция и переменным интерпретатора Python.

Данный модуль имеет огромное количество функций и переменных, подробнее о них можете почитать на сайте документации. Здесь же будут самые интересные из них:

sys.platform — позволяет узнать платформу, на которой запущен Python и, на её основе выполнить определённый код. Также, она возвращает строку. Все значения тут.

sys.stdin — файловая переменная, позволяющая получить данным к входным данным из терминала.

sys.stdout, sys.stderr — файловые переменные позволяющие выводить в терминал сообщения/ошибки.

sys.version_info — позволяет узнать версию языка, на котором запускается скрипт. Возвращает кортеж. Если же вам нужна строка, воспользуйтесь sys.version

#миниурок #sys
Forwarded from Python Community
⚡️ Разница между __str__ и __repr__

Довольно часто при создании собственного класса, необходимо выводить данные о нём в виде строки. Документация говорит использовать __str__ и __repr__, но в чём же между ними разница?

__str__() — метод, который превращает объект в более читаемый вид, понятный для пользователя программы. Если же он не определён, то вызывает __repr__

__repr__()
— метод, используемый программистами. Это — строка, позволяющая создать новый объект с такими же данными, используя функцию eval.

#теория #str
Forwarded from Python Community
remove_comments.py
264 B
⚡️ Задачка с собеседования | #Medium

Условие:

Ваша задача — написать функцию, которая возвращает строку без комментариев.

Примеры находятся в файле выше.

📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇

#Задачка_с_собеседования
Forwarded from Python Community
⚡️ Ответ на предыдущую задачу
Forwarded from Python Community
⚡️ Сохраняем Python-объект в файле

Сделать такое позволяет pickle — предустановленный модуль, реализующий алгоритм преобразования объекта в поток байтов или наоборот.

Для работы с ним вам достаточно двух функций:

pickle.dump(obj, file) — записывает сериализованный объект в файл.

pickle.load(file) — загружает объект из файла и возвращает его.

Внимание! Этот модуль считается небезопасным. Не загружайте файлы из сомнительных источников.
Forwarded from Python Community
⚡️ Собираем данные о системе

psutil
— утилита, позволяющая получить данные о системе и о её состоянии: от количества ядер процессора, до текущей нагрузки на сеть.

Установка: pip install psutil

Данный модуль стабильно работает на большинстве операционных систем, но функционал у них всё таки отличается.

Например, есть функция psutil.Process.rlimit, работающая только в ОС Linux и FreeBSD, но не работающая в Windows.

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

#миниурок #psutil
Forwarded from Python Community
⚡️ Ответ на предыдущую задачу
Forwarded from Python Community
⚡️ Переопределяем операторы

В Python почти каждый оператор — метод класса. Например, + — это __add__, сравнение (==) — это __eq__, а with__enter__, __exit__.

Зная это мы можем переопределить оператор, просто унаследовав класс, чьё поведение мы хотим изменить и записать туда необходимую функцию.

Подробнее об используемых метода можно найти на странице документации оператора, как с with, или в документации модуля operators, которые предоставляются в виде функций.

#теория #operators
Forwarded from Python Community
⚡️ Модуль collections, класс Counter

collections
— модуль, предоставляющий специализированные типы данных. Он хранит в себе различные классы, такие как namedtuple, counter, deque и множество других. Об одном из них мы и поговорим.

Counter — словарь, позволяющий узнать какое количество раз повторяются элементы в итерируемом объекте (list, string).

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

most_common(n) — возвращает n самых повторяемых объектов.

elements() — возвращает итератор для всех элементов.

#миниурок #Counter
Forwarded from Python Community
⚡️ Модуль collections. Класс OrderedDict

Мы уже рассказывали про модуль collections, а если конкретнее — класс Counter. В этот раз разберём OrderedDict.

OrderedDict — словарь, особенный тем, что все ключи находятся в том же порядке, в котором и добавлялись.

popitem() — Возвращает и удаляет последний элемент из упорядоченного списка.

move_to_end(key) — перемещает ключ в конец. Если передан параметр last, перемещает ключ в начало.

Подробнее о данном классе можете почитать тут.

#миниурок #collections
Forwarded from Python Community
⚡️ Оператор yield

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

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

Если же обычный метод возвращает какое-то значение, то генератор возвращает себя, благодаря чему мы можем пройтись по нему используя циклы или функцию next().

#теория #итераторы
Forwarded from Python Community
⚡️ Модуль collections. Класс deque

Раннее мы писали про Counter и OrderedDict, настало время поговорить про deque.

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

append(x), appendleft(x) — добавляет элемент в конец/начало.

pop(), popleft() — возвращает и удаляет элемента с конца/начала очереди.

rotate(n=1) — перемещает n объектов с конца в начало очереди

#миниурок #collections
Forwarded from Python Community
⚡️ Модуль collections. Тип namedtuple

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

Чтобы исправить эту проблему, Python разработчики придумали namedtuple, который предоставляет тип кортежа, в котором данные можно получить как атрибуты.

namedtuple(typename, field_names) — создаёт тип кортежа с именем typename и атрибутами field_names, и возвращает тип.

#миниурок #collections
Forwarded from Python Community
⚡️ Итераторы и генераторы

Если вы подписаны на канал довольно давно, то, наверное, уже слышали эти слова, но что они значат?

Итератор — объект, по которому можно «пройтись» с помощью цикла. map, filter, zip, все они возвращают итераторы, как и итерируемые объекты (list, set, dict). Основной их особенностью является наличие метода __next__.

Генератор — тот же самый итератор, но «пройтись» по нему можно только один раз. Его используют, например, при создании генераторных списков. Ещё генераторами являются функции, которые используют yield.

#теория
Forwarded from Python Community
⚡️ Методы генераторы

В отличие от итераторов, у генераторов есть собственные методы, позволяющие контролировать их работу. Их три: close, throw, send.

close() — останавливает генератор на следующем проходе.

throw() — выводит ошибку на экран и останавливает выполнение генератора сразу же. С помощью них можно контролировать бесконечные генераторы.

send() — самый интересный метод. Позволяет передавать значения генератору. Первым всегда должно быть None, что бы запустить его.

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

#теория
Forwarded from Python Community
⚡️ Находим стилистические ошибки

Дабы избежать конфликтов между программистами, разработчики создали соглашение под названием "PEP 8", в котором описывались правила оформления кода.

Но хранить их все в голове довольно тяжело, поэтому придумали flake8 — скрипт, что позволяет проверить программу на стилистические ошибки.

Установка: pip install flake8

Запускается скрипт довольно просто, достаточно вписать в терминал flake8 file1.py file2.py или flake8 folder_name.

Также вы можете задавать свои настройки — подробнее можно почитать на сайте документации.

#миниурок #flake8
Forwarded from Python Community
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ Профилируем код

В этот раз мы рассмотрим профилировщик под именем py-spy, позволяющий отслеживать потребление ресурсов, не редактируя код.

Установка: pip install py-spy

Давайте поговорим о командах, которые используются в скрипте: все они вызываются с параметром --pid.

py-spy top — отображает нагрузку на процессор. Очень похожа на команду top из Unix.

py-spy record — записывает использование ресурсов в svg файл.

py-spy dump — собирает стек вызовов и выводит на консоль.

На гиф — результат работы первой команды. Если вам стало интересно, то можете посетить github страницу проекта.

#миниурок #pyspy
Forwarded from Python Community
⚡️ Бесконечные итераторы

Продолжаем рассказывать про итераторы, а если быть конкретнее, про модуль itertools. itertools — модуль, хранящий в себе множество готовых итераторов, как, например, groupby.

count(start, step=1) — итератор, считающий от start, добавляя step до бесконечности. Он чем-то напоминает range, но без ограничений.

cycle(elems) — бесконечное количество раз возвращает элементы внутри elems по порядку.

repeat(elem, n) — возвращает n раз или бесконечно значение elem.

#миниурок #itertools