Python Community
12.9K subscribers
1.25K photos
38 videos
15 files
737 links
Python Community RU - СНГ сообщество Python-разработчиков

Чат канала: @python_community_chat

Сотрудничество: @cyberJohnny и @Sergey_bzd

РКН реестр:
https://knd.gov.ru/license?id=67847dd98e552d6b54a511ed&registryType=bloggersPermission
Download Telegram
⚡️ Профилируем код

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

Запустить код можно с помощью cProfile.run(command) или, через терминал, изучить весь файл: python -m cProfile script.py

После выполнения вы увидите результат, как на фото выше.

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

#миниурок #cProfile
⚡️ Задачка с собеседования | #Medium, #Hard

Условие:

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

Входные данные всегда будут правильные, всегда будет только одно решение.

Пример:

two_sum([2, 7, 11, 15], 9) -> [0, 1]
two_sum([3, 2, 4], 6) -> [1, 2]
two_sum([0, 4, 3, 0], 0) -> [0, 3]

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

#Задачка_с_собеседования
Какой у вас уровень в программировании?
Anonymous Poll
77%
Только учусь
17%
Junior
4%
Middle
2%
Senior
Канал, который научит тебя писать действительно качественный код!

На канале Clean Code публикуются рекомендации по написанию и улучшению кода, обзоры распространенных ошибок, инструменты и литература.

Если ты хочешь начать писать код чище — вступай в клуб профессионалов.
⚡️ Ответ на предыдущую задачу
⚡️ Интерактивный интерпретатор IPython

Одной из самых классных вещей в Python является интерактивный интерпретатор, позволяющий тестировать возможности языка. Но порой его функционала может не хватать и на помощь приходит IPython.

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

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

Например, есть команда %run, которая запускает скрипт, или, %timeit, позволяющая измерить выполнение кода.

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

#миниурок #IPython
Что выведет код выше?
Anonymous Quiz
40%
True
41%
False
10%
Ничего
8%
Узнать ответ
⚡️ Делаем подсветку кода

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

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

Эта библиотека поддерживает около 500 различных языков и переводит их в HTML, RTF, LaTeX форматы, что позволяет изображать свой код на различных сайтах, не прибегая к изображениям.

Также модуль может использоваться из командной строки, например: pygmentize test.py. Кроме того, вы можете изменить конфигурации, но об этом подробно написано тут.

#миниурок #pygmentize
⚡️ Интерактивный интерпретатор IPython. Часть 2

IPython
— гораздо более удобный интерпретатор для шелла Python. О нём и его особенностях мы рассказывали ранее. В этот раз поговорим о его командах:

Знак вопроса (?) после переменной выдаст информацию о ней. Тип, несколько данных относительно объекта и строку документации.

%pip — запускает pip из интерпретатора и выполняет переданные команды.

%run — запускает python файл. Принимает аргументы, расписанные тут.

%autocall — задаёт режим запуска команды. При значении 0 будет выводить функцию как строку, а при 2 — запускать команду с значениями по умолчанию.

Подробнее все команды можно изучить здесь.

#миниурок #IPython
⚡️ Задачка с собеседования | #Medium, #Hard

Условие:

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

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

Пример:

move_zeroes([0, 1, 0, 3, 12]) -> [1, 3, 12, 0, 0]
move_zeroes([0]) -> [0]
move_zeroes([1, 0, 3, 0, 0, 0, 5]) -> [1, 3, 5, 0, 0, 0, 0]

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

#Задачка_с_собеседования
⚡️ Ответ на предыдущую задачу
⚡️ Отслеживаем изменения в файлах

pyinotify
— интересный модуль с открытым исходным кодом, позволяющий отслеживать изменения в файловой системе. Печально, правда, что он работает только на ОС Linux.

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

Модуль используют функцию ядра Linux (объединённую с версии 2.6.13), называемую inotify. Уведомления из ядра экспортируются в пространство пользователя и позволяют мониторить изменения в файловой системе.

Попробовать библиотеку можно с помощью команды python -m pyinotify ./. Или же загрузив пример с guthub.

#миниурок #pyinotify
⚡️ Генераторные списки

Генераторные списки — синтаксическая конструкция, позволяющая превращать циклические конструкции в одну строку.

Выглядит она так: [expression for member in iterable], где expression — значение, которое будет записано в список, member — переменная, в которую записывается результат прохода по циклу и iterable — итерируемый объект, с которым работает конструкция.

Такое можно проделывать не только со списками, а и с кортежами, множествами, просто заменив квадратные скобки на круглые или фигурные (в зависимости от типа).

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

#теория
⚡️ Задачка с собеседования | #Medium, #Hard

Условие:

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

Пример:

is_palindrome('A man, a plan, a canal: Panama') -> True
is_palindrome('0P') -> False
is_palindrome('a.') -> True

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

#Задачка_с_собеседования
⚡️ Ответ на предыдущую задачу