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

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

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

РКН реестр:
https://knd.gov.ru/license?id=67847dd98e552d6b54a511ed&registryType=bloggersPermission
Download Telegram
Что выведет код выше?
Anonymous Quiz
25%
True
47%
False
21%
Ошибку
7%
Узнать ответ
⚡️ Ищем файлы по шаблону

Если вы работали с Unix-подобными ОС, то наверняка знаете, что можно выбирать файлы используя шаблоны. Вот и в Python есть такая возможность — всё благодаря модулю glob.

glob.glob(pathname, recursive=False) — находит файлы по переданному шаблону. Кстати, о шаблонах можете почитать тут. recursive говорит функции, стоит ли проходить по под-директории, например при наличии ** в шаблоне.

glob.iglob(pathname, recursive=False) — делает то же самое, что и функция выше, но возвращает итератор, что позволяет сэкономить на памяти, если файлов много.

glob.escape(pathname) — экранирует особые символы (*, ?, [).

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

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

Условие:

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

Примеры:

sort_array([3, 1]) -> [1, 3]
sort_array([3, 2, -1, 4]) -> [-1, 2, 3, 4]
sort_array([5, 3, 2, 8, 1, 4]) -> [1, 3, 2, 8, 5, 4]
sort_array([0, -1, -2, -3, 4, 1]) -> [0, -3, -2, -1, 4, 1]

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

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

Функционал os.path кому-то может показаться недостаточным и, чтобы не изобретать велосипед, стоит взглянуть на pathlib, добавленный с версии python 3.4.

Самый важный класс — Path. Он создаёт путь и выбирает подкласс (PosixPath, WindowsPath) на основе запущенной ОС. Подробнее можно почитать тут.

Работать с ним можно с помощью оператора "/", который добавляет второй аргумент в путь.

Ещё одной особенностью класса является совместимость с os, поскольку это PathLike объект.

P.S.
Если вы используете модуль glob, то можете его не импортировать, функционал хранится в функции pathlib.glob.

#миниурок #pathlib
⚡️ Что такое __name__

Заглянув в большинство скриптов вы можете увидеть строку по типу __name__ == "__main__". Многие новички не понимают, зачем её добавлять, если и так всё работает.

Представим, что вы написали небольшой скрипт, который выводит hello world при запуске. А другой программист захотел импортировать ваш модуль, поскольку там была функция print_hello().

Но вместе с импортом он получил ненужную hello world в терминал. Почему так случилось? Потому что python-код также выполняется во время импорта. Чтобы этого избежать, используют __name__.

При импорте __name__ получает название модуля, а при прямом запуске (python3 script.py) его значение будет __main__. Подробнее вы, как обычно, можете почитать тут.

#теория
⚡️ Что такое __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