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

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

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

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

Внутри операционной системы существуют некие переменные окружения. Самая популярная — PATH, её вы могли видеть при установке языка. Что они значат я рассказывать не буду, а вот как с ними работать — расскажу.

Для этого нам потребуется модуль os, а если быть конкретнее — os.environ (или os.environb) и os.getenv() (или os.getenvb()).

os.environ — словарь, внутри которого можно брать значения переменных по ключу. Если вам нужно их байтовое представление, воспользуйтесь os.environb.

os.getenv(key, default=None) — берёт значение по ключу из os.environ, а если ключа не существует, возвращает default. os.getenvb() возвращает данные из os.environb.

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

Условие:

Ваша задача — написать функцию, которая проверяет, может ли такая переменная существовать. Переменная не может начинаться с цифры, состоит только из символов A-z, цифр и "_". Также, она не может быть ни одним из зарегистрированных слов. Их можно взять их keyword.kwlist.

Примеры:

check_var_name('I$Contain0*7') -> False
check_var_name('1wrong') -> False
check_var_name('_oKe') -> True
check_var_name('True') -> False

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

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

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

Вот парочка полезных функций из него:

join(path, *paths)
— объединяет все пути в один, используя разделитель, если необходимо.

expandvars(path) — заменяет имена переменных $NAME или ${NAME} на их значения. На ОС Windows разрешает использовать %NAME%.

expanduser(path) — заменяет такие компоненты как "~" или "~user" на директорию пользователя. На Linux это значение HOME, а на Windows — USERPROFILE или HOMEPATH + HOMEDRIVE.

Если вам что-то не понятно или же вам необходим больший функционал, то посетите страницу документации.

#миниурок #os
Что выведет код выше?
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
👍1
⚡️ Что такое __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

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

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