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

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

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

РКН реестр:
https://knd.gov.ru/license?id=67847dd98e552d6b54a511ed&registryType=bloggersPermission
Download Telegram
⚡️ Интерактивный интерпретатор 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

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

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

Для этого нам может пригодится Cython, модуль переводящий код из языка Python в C с минимальным количеством изменений.

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

Основное различие между кодом python и cython в том, что cpdef, cdef, def передают название переменных/функций. cpdef используется при создании кода, доступного и из python и из cython, когда cdef доступен только для второго.

После — компилируем код с помощью скрипта из второго файла и запускаем его командой python3 setup.py build_ext --inplace.

В результате мы получим файл с си кодом. Мы можете открыть интерпретатор python и импортировать функцию test командой from cython_ex import test

#миниурок #cython
⚡️ Оператор моржа

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

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

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

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

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

Условие:

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

Пример:

isPowerOfThree(27) -> True
isPowerOfThree(11) -> False
isPowerOfThree(1) -> True

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

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

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

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

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

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

#миниурок #sh