Python Community
13.1K subscribers
1.24K photos
26 videos
15 files
712 links
Python Community RU - СНГ сообщество Python-разработчиков

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

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

РКН реестр:
https://knd.gov.ru/license?id=67847dd98e552d6b54a511ed&registryType=bloggersPermission
Download Telegram
⚡️ Что такое __all__ ?

Продолжаем говорить про импорт модулей. В этот раз разберём, что такое переменная __all__ и как её использовать.

Думаю, в нескольких ваших скриптах встречается строка по типу from package import *, которая импортирует всё из модуля. Но ведь функций/классов может быть намного больше, чем вы думаете.

Чтобы не нагружать вашу программу ненужными объектами разработчики вписывают в __all__ имена доступных типов.

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

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

Условие:

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

Примеры:

reverse(123) -> 321
reverse(-123) -> -321
reverse(1237568) -> 8657321
reverse(9000000) -> 9

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

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

Модуль time позволяет замерять время выполнения кода, может заморозить программу, а также позволяет узнать текущее время.

Первую задачу выполняет функция time(), которая возвращает время в секундах. Для заморозки приложения используют команду sleep(seconds).

А вот выводом времени занимается метод strftime(), который выводит структуру, полученную, например, из gmtime() в определённом формате.

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

#миниурок #time
Что выведет этот код?
Anonymous Quiz
11%
0
10%
6
19%
30
5%
46
40%
Ошибку
15%
Узнать ответ
⚡️ Что такое __pycache__

На этот раз, это не переменная, а папка, внутри которой хранятся файлы .pyc и .pyo. Зачем она нужна можно почитать в PEP 3147, а здесь будет краткое объяснение.

Каждый раз, когда вы запускаете программу, Python, переводит её в байткод и сохраняет в папку __pycache__. Это сделано в целях оптимизации и, чтобы, модули быстрее импортировались.

Файлы с расширением .pyc и .pyo — это байткод и оптимизированный байткод. Они создаются заново, если код программы изменился.

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

Условие:

Вам необходимо проверить, являются ли две строки анаграммами? На вход идут две строки, состоящие из символов английского алфавита.

Примеры:

is_anagram('car', 'tar') -> False
is_anagram('car', 'cart') -> False
is_anagram('anagram', 'nagaram') -> True
is_anagram('beluga', 'begula') -> True

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

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

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

ceil(x), floor(x) — округляет число x в большую/меньшую сторону.

fsum(iterable) — суммирует все значения в iterable, исключая неточность чисел с плавающей точкой. Лучше это посмотреть на примере выше.

isclose(a, b) — поскольку числа с плавающей точкой имеют неточность, правильнее будет их сравнивать используя этот метод.

Также там есть множество логарифмических и тригонометрических функций, которые вы можете найти, почитав документацию.

#миниурок #math
Что выведет код выше?
Anonymous Quiz
7%
6
16%
5
16%
3
14%
2
46%
Узнать ответ
⚡️ Работаем с логами

Для этого в Python существует удобный модуль logging, позволяющий управлять логами в пару строк.

logging.getLogger(name=None) — возвращает экземпляр логера на основе имени. Может быть полезна при разработке модулей.

logging.basicConfig(**kwargs) — позволяет задать настройки модулю, например, имя файла (filename), формат записи (format), уровень важности (level).

debug(), info(), warning(), error(), critical() — позволяют записывать информацию в логер на определённом уровне важности.

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

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

Условие:

Вам необходимо проверить, в правильном ли порядке расставлены {}, (), [], <>. Вместе с ними может идти и другой текст, поэтому вам стоит заняться фильтрацией строки.

Примеры:

valid_bracket("(some_data)")
valid_bracket("() [ww]1{}<>")
valid_bracket("< [ ( { })]>")
valid_bracket("(]")
valid_bracket("([9)]")

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

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

Это — разновидность очередей, в которой у каждого элемента есть свой приоритет. Модуль heapq реализует такую возможность, используя кучи — бинарные деревья, у которых родительский объект имеет значение, меньшее или равное любому из его дочерних узлов.

heappush(heap, value) — добавляет value в heap, сохраняя инвариантность кучи.

heappop(heap) — возвращает наименьшее значение из heap.

heapify(x) — превращает итерируемый объект x в кучу.

nsmallest(n, iter), nlargest(n, iter) — позволяют взять n-ное количество минимальных/максимальных элементов из iter.

#миниурок #heapq
⚡️ Красивый вывод данных

Если вам приходится работать с выводом списков или словарей, то вы можете упростить себе работу, использовав pprint.

PrettyPrinter(indent=1, width=80, depth=None, stream=None) — Класс, отвечающий за перевод данных в красивый формат.

indent определяет количество отступов перед объектами, а width — ширину вывода. depth — сколько объектов необходимо рекурсивно раскрывать, а stream — куда записывать все данные (по умолчанию sys.stdout).

pprint.pprint(object, ...) — функция, упрощающая работу с классом. Принимает object, который необходимо вывести и те же параметры, что и PrettyPrinter.

#миниурок #pprint