Forwarded from Python Community
⚡️ Системный модуль в Python
sys — предустановленный модуль, обеспечивающий доступ к функция и переменным интерпретатора Python.
Данный модуль имеет огромное количество функций и переменных, подробнее о них можете почитать на сайте документации. Здесь же будут самые интересные из них:
sys — предустановленный модуль, обеспечивающий доступ к функция и переменным интерпретатора Python.
Данный модуль имеет огромное количество функций и переменных, подробнее о них можете почитать на сайте документации. Здесь же будут самые интересные из них:
sys.platform
— позволяет узнать платформу, на которой запущен Python и, на её основе выполнить определённый код. Также, она возвращает строку. Все значения тут.sys.stdin
— файловая переменная, позволяющая получить данным к входным данным из терминала.sys.stdout
, sys.stderr
— файловые переменные позволяющие выводить в терминал сообщения/ошибки.sys.version_info
— позволяет узнать версию языка, на котором запускается скрипт. Возвращает кортеж. Если же вам нужна строка, воспользуйтесь sys.version
#миниурок #sysForwarded from Python Community
⚡️ Разница между
#теория #str
__str__
и __repr__
Довольно часто при создании собственного класса, необходимо выводить данные о нём в виде строки. Документация говорит использовать __str__
и __repr__
, но в чём же между ними разница?__str__()
— метод, который превращает объект в более читаемый вид, понятный для пользователя программы. Если же он не определён, то вызывает __repr__
__repr__()
— метод, используемый программистами. Это — строка, позволяющая создать новый объект с такими же данными, используя функцию eval
.#теория #str
Forwarded from Python Community
remove_comments.py
264 B
⚡️ Задачка с собеседования | #Medium
Условие:
Ваша задача — написать функцию, которая возвращает строку без комментариев.
Примеры находятся в файле выше.
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
Условие:
Ваша задача — написать функцию, которая возвращает строку без комментариев.
Примеры находятся в файле выше.
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
Forwarded from Python Community
⚡️ Сохраняем Python-объект в файле
Сделать такое позволяет pickle — предустановленный модуль, реализующий алгоритм преобразования объекта в поток байтов или наоборот.
Для работы с ним вам достаточно двух функций:
Внимание! Этот модуль считается небезопасным. Не загружайте файлы из сомнительных источников.
Сделать такое позволяет pickle — предустановленный модуль, реализующий алгоритм преобразования объекта в поток байтов или наоборот.
Для работы с ним вам достаточно двух функций:
pickle.dump(obj, file)
— записывает сериализованный объект в файл.pickle.load(file)
— загружает объект из файла и возвращает его.Внимание! Этот модуль считается небезопасным. Не загружайте файлы из сомнительных источников.
Forwarded from Python Community
⚡️ Собираем данные о системе
psutil — утилита, позволяющая получить данные о системе и о её состоянии: от количества ядер процессора, до текущей нагрузки на сеть.
Установка:
Например, есть функция
Подробнее о таких особенностях можно почитать на сайте документации, а определить используемую систему можно с помощью констант, которые написаны тут.
#миниурок #psutil
psutil — утилита, позволяющая получить данные о системе и о её состоянии: от количества ядер процессора, до текущей нагрузки на сеть.
Установка:
pip install psutil
Данный модуль стабильно работает на большинстве операционных систем, но функционал у них всё таки отличается.Например, есть функция
psutil.Process.rlimit
, работающая только в ОС Linux и FreeBSD, но не работающая в Windows.Подробнее о таких особенностях можно почитать на сайте документации, а определить используемую систему можно с помощью констант, которые написаны тут.
#миниурок #psutil
Forwarded from Python Community
⚡️ Переопределяем операторы
В Python почти каждый оператор — метод класса. Например, + — это
Зная это мы можем переопределить оператор, просто унаследовав класс, чьё поведение мы хотим изменить и записать туда необходимую функцию.
Подробнее об используемых метода можно найти на странице документации оператора, как с with, или в документации модуля operators, которые предоставляются в виде функций.
#теория #operators
В Python почти каждый оператор — метод класса. Например, + — это
__add__
, сравнение (==) — это __eq__
, а with — __enter__
, __exit__
.Зная это мы можем переопределить оператор, просто унаследовав класс, чьё поведение мы хотим изменить и записать туда необходимую функцию.
Подробнее об используемых метода можно найти на странице документации оператора, как с with, или в документации модуля operators, которые предоставляются в виде функций.
#теория #operators
Forwarded from Python Community
⚡️ Модуль collections, класс Counter
collections — модуль, предоставляющий специализированные типы данных. Он хранит в себе различные классы, такие как namedtuple, counter, deque и множество других. Об одном из них мы и поговорим.
Counter — словарь, позволяющий узнать какое количество раз повторяются элементы в итерируемом объекте (list, string).
Получить данные можно с помощью квадратных скобочек. Если же элемент не найден, он возвращает 0.
#миниурок #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 — словарь, особенный тем, что все ключи находятся в том же порядке, в котором и добавлялись.
Подробнее о данном классе можете почитать тут.
#миниурок #collections
Мы уже рассказывали про модуль collections, а если конкретнее — класс Counter. В этот раз разберём OrderedDict.
OrderedDict — словарь, особенный тем, что все ключи находятся в том же порядке, в котором и добавлялись.
popitem()
— Возвращает и удаляет последний элемент из упорядоченного списка. move_to_end(key)
— перемещает ключ в конец. Если передан параметр last, перемещает ключ в начало.Подробнее о данном классе можете почитать тут.
#миниурок #collections
Forwarded from Python Community
⚡️ Оператор yield
yield — оператор, позволяющий создавать генераторы. Благодаря нему функция может вернуть сразу несколько значений.
Записывается он вместо return, принимая число, которое должна вернуть функция.
Если же обычный метод возвращает какое-то значение, то генератор возвращает себя, благодаря чему мы можем пройтись по нему используя циклы или функцию
#теория #итераторы
yield — оператор, позволяющий создавать генераторы. Благодаря нему функция может вернуть сразу несколько значений.
Записывается он вместо return, принимая число, которое должна вернуть функция.
Если же обычный метод возвращает какое-то значение, то генератор возвращает себя, благодаря чему мы можем пройтись по нему используя циклы или функцию
next()
.#теория #итераторы
Forwarded from Python Community
⚡️ Модуль collections. Класс deque
Раннее мы писали про Counter и OrderedDict, настало время поговорить про deque.
deque — класс, предоставляющий двойную очередь (то есть элементы можно брать и с начала и с конца). Его основное преимущество над списком — скорость при изменении размера. Добавление и удаление элементов имеет O(1), а у списка — O(n).
#миниурок #collections
Раннее мы писали про 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, который предоставляет тип кортежа, в котором данные можно получить как атрибуты.
#миниурок #collections
Часто, используя кортежи, мы берём значения с помощью индексаторов (квадратных скобочек), что выглядит не особо красиво и совсем непонятно для другого программиста.
Чтобы исправить эту проблему, Python разработчики придумали namedtuple, который предоставляет тип кортежа, в котором данные можно получить как атрибуты.
namedtuple(typename, field_names)
— создаёт тип кортежа с именем typename
и атрибутами field_names
, и возвращает тип.#миниурок #collections
Forwarded from Python Community
⚡️ Итераторы и генераторы
Если вы подписаны на канал довольно давно, то, наверное, уже слышали эти слова, но что они значат?
Итератор — объект, по которому можно «пройтись» с помощью цикла. map, filter, zip, все они возвращают итераторы, как и итерируемые объекты (list, set, dict). Основной их особенностью является наличие метода
Генератор — тот же самый итератор, но «пройтись» по нему можно только один раз. Его используют, например, при создании генераторных списков. Ещё генераторами являются функции, которые используют yield.
#теория
Если вы подписаны на канал довольно давно, то, наверное, уже слышали эти слова, но что они значат?
Итератор — объект, по которому можно «пройтись» с помощью цикла. map, filter, zip, все они возвращают итераторы, как и итерируемые объекты (list, set, dict). Основной их особенностью является наличие метода
__next__
.Генератор — тот же самый итератор, но «пройтись» по нему можно только один раз. Его используют, например, при создании генераторных списков. Ещё генераторами являются функции, которые используют yield.
#теория
Forwarded from Python Community
⚡️ Методы генераторы
В отличие от итераторов, у генераторов есть собственные методы, позволяющие контролировать их работу. Их три:
С помощью send, к слову, создают корутины — функции, которым можно передавать значения, останавливать и возобновлять работу программы.
#теория
В отличие от итераторов, у генераторов есть собственные методы, позволяющие контролировать их работу. Их три:
close
, throw
, send
.close()
— останавливает генератор на следующем проходе.throw()
— выводит ошибку на экран и останавливает выполнение генератора сразу же. С помощью них можно контролировать бесконечные генераторы.send()
— самый интересный метод. Позволяет передавать значения генератору. Первым всегда должно быть None, что бы запустить его. С помощью send, к слову, создают корутины — функции, которым можно передавать значения, останавливать и возобновлять работу программы.
#теория
Forwarded from Python Community
⚡️ Находим стилистические ошибки
Дабы избежать конфликтов между программистами, разработчики создали соглашение под названием "PEP 8", в котором описывались правила оформления кода.
Но хранить их все в голове довольно тяжело, поэтому придумали flake8 — скрипт, что позволяет проверить программу на стилистические ошибки.
Установка:
Также вы можете задавать свои настройки — подробнее можно почитать на сайте документации.
#миниурок #flake8
Дабы избежать конфликтов между программистами, разработчики создали соглашение под названием "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, позволяющий отслеживать потребление ресурсов, не редактируя код.
Установка:
py-spy top — отображает нагрузку на процессор. Очень похожа на команду top из Unix.
py-spy record — записывает использование ресурсов в svg файл.
py-spy dump — собирает стек вызовов и выводит на консоль.
На гиф — результат работы первой команды. Если вам стало интересно, то можете посетить github страницу проекта.
#миниурок #pyspy
В этот раз мы рассмотрим профилировщик под именем 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.
#миниурок #itertools
Продолжаем рассказывать про итераторы, а если быть конкретнее, про модуль itertools. itertools — модуль, хранящий в себе множество готовых итераторов, как, например, groupby.
count(start, step=1)
— итератор, считающий от start, добавляя step до бесконечности. Он чем-то напоминает range, но без ограничений.cycle(elems)
— бесконечное количество раз возвращает элементы внутри elems по порядку.repeat(elem, n)
— возвращает n раз или бесконечно значение elem.#миниурок #itertools
Forwarded from Python Community
⚡️ Замеряем время выполнения программы
Многие новички используют time или встроенные в ОС приложения, но это не верно. Лучше использовать timeit, поскольку он может более точно рассчитать, сколько занимает выполнение кода, независимо от ОС.
Он довольно прост в использовании. Всего пару строк, и вы можете доказать, что код админа медленнее вашего решения :)
Если вам лень запускать IDE, можете воспользоваться терминалом, вписав
А если вам стало интересно, то можете посетить страницу документации.
#миниурок #timeit
Многие новички используют time или встроенные в ОС приложения, но это не верно. Лучше использовать timeit, поскольку он может более точно рассчитать, сколько занимает выполнение кода, независимо от ОС.
Он довольно прост в использовании. Всего пару строк, и вы можете доказать, что код админа медленнее вашего решения :)
timeit.timeit(code, setup='', timer, number=1_000_000)
— запускает код number раз. Но перед этим выполняет строку setup, которая не входит в время, измеряемое таймером. Эта основная функция больше вам не понадобится.Если вам лень запускать IDE, можете воспользоваться терминалом, вписав
python3 -m timeit "print('Hello world')"
.А если вам стало интересно, то можете посетить страницу документации.
#миниурок #timeit
Forwarded from Python Community
⚡️ Продолжаем рассматривать модуль itertools
Думаю, стоит вам ещё рассказать про этот модуль и интересные функции. Начнём!
#миниурок #itertools
Думаю, стоит вам ещё рассказать про этот модуль и интересные функции. Начнём!
zip_longest(a, b, fill_value)
— очень удобный итератор. Работает также как и zip, но если длина списков разная, заполняет их fill_value.takewhile(func, seq)
— возвращает значения из seq, пока func не вернёт False.chain(a, b,...)
— соединяет два и более итерируемых объектов в один.product(a, b...)
— декартово произведение итерируемых объектов.#миниурок #itertools
Forwarded from Python School
Автоматизация и скриптинг
Если вы программист, вы, вероятно, будете ленивы и захотите автоматизировать практически все, что можете, верно?
Не беспокойтесь, питон тебя прикроет. Есть множество вещей, которые вы можете автоматизировать всего за 4-5 строк кода. От установки заданий cron и напоминаний до загрузки ваших любимых видео на YouTube, вы можете сделать все это с помощью нескольких строк в python.
Если вы программист, вы, вероятно, будете ленивы и захотите автоматизировать практически все, что можете, верно?
Не беспокойтесь, питон тебя прикроет. Есть множество вещей, которые вы можете автоматизировать всего за 4-5 строк кода. От установки заданий cron и напоминаний до загрузки ваших любимых видео на YouTube, вы можете сделать все это с помощью нескольких строк в python.