Forwarded from Python Community
⚡️ Работаем с окружением
Внутри операционной системы существуют некие переменные окружения. Самая популярная — PATH, её вы могли видеть при установке языка. Что они значат я рассказывать не буду, а вот как с ними работать — расскажу.
Для этого нам потребуется модуль os, а если быть конкретнее —
#миниурок #os
Внутри операционной системы существуют некие переменные окружения. Самая популярная — 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
Forwarded from Python Community
⚡️Создаём файловые пути
Если вы каким-то образом взаимодействуете с файлами в операционной системе, то вам необходимо создавать пути, что можно делать с помощью модуля os.path.
Вот парочка полезных функций из него:
Если вам что-то не понятно или же вам необходим больший функционал, то посетите страницу документации.
#миниурок #os
Если вы каким-то образом взаимодействуете с файлами в операционной системе, то вам необходимо создавать пути, что можно делать с помощью модуля os.path.
Вот парочка полезных функций из него:
join(path, *paths)— объединяет все пути в один, используя разделитель, если необходимо.
expandvars(path)
— заменяет имена переменных $NAME или ${NAME} на их значения. На ОС Windows разрешает использовать %NAME%.expanduser(path)
— заменяет такие компоненты как "~" или "~user" на директорию пользователя. На Linux это значение HOME, а на Windows — USERPROFILE или HOMEPATH + HOMEDRIVE.Если вам что-то не понятно или же вам необходим больший функционал, то посетите страницу документации.
#миниурок #os
Forwarded from Python Community
⚡️ Ищем файлы по шаблону
Если вы работали с Unix-подобными ОС, то наверняка знаете, что можно выбирать файлы используя шаблоны. Вот и в Python есть такая возможность — всё благодаря модулю glob.
Подробнее о модуле вы, как обычно, можете почитать на сайте документации.
#миниурок #glob
Если вы работали с Unix-подобными ОС, то наверняка знаете, что можно выбирать файлы используя шаблоны. Вот и в Python есть такая возможность — всё благодаря модулю glob.
glob.glob(pathname, recursive=False)
— находит файлы по переданному шаблону. Кстати, о шаблонах можете почитать тут. recursive говорит функции, стоит ли проходить по под-директории, например при наличии ** в шаблоне.glob.iglob(pathname, recursive=False)
— делает то же самое, что и функция выше, но возвращает итератор, что позволяет сэкономить на памяти, если файлов много.glob.escape(pathname)
— экранирует особые символы (*, ?, [).Подробнее о модуле вы, как обычно, можете почитать на сайте документации.
#миниурок #glob
Forwarded from Python Community
⚡️Создаём файловые пути
Функционал os.path кому-то может показаться недостаточным и, чтобы не изобретать велосипед, стоит взглянуть на pathlib, добавленный с версии python 3.4.
Самый важный класс — Path. Он создаёт путь и выбирает подкласс (PosixPath, WindowsPath) на основе запущенной ОС. Подробнее можно почитать тут.
Работать с ним можно с помощью оператора "/", который добавляет второй аргумент в путь.
Ещё одной особенностью класса является совместимость с os, поскольку это PathLike объект.
P.S. Если вы используете модуль glob, то можете его не импортировать, функционал хранится в функции
#миниурок #pathlib
Функционал os.path кому-то может показаться недостаточным и, чтобы не изобретать велосипед, стоит взглянуть на pathlib, добавленный с версии python 3.4.
Самый важный класс — Path. Он создаёт путь и выбирает подкласс (PosixPath, WindowsPath) на основе запущенной ОС. Подробнее можно почитать тут.
Работать с ним можно с помощью оператора "/", который добавляет второй аргумент в путь.
Ещё одной особенностью класса является совместимость с os, поскольку это PathLike объект.
P.S. Если вы используете модуль glob, то можете его не импортировать, функционал хранится в функции
pathlib.glob
.#миниурок #pathlib
Forwarded from karpov.courses
● Долгожданный match-case
Известно, что данную конструкцию всегда можно было заменить if-elif-else, но, согласитесь, при большом количестве вариантов код выглядел весьма громоздко. Теперь с помощью конструкции match-case мы избавляемся от ненужных повторов при сравнении с разными условиями. Ура, писать многоэтажные if стало ещё проще!
● Больше подробностей в ошибках
Если вы только встали на нелёгкий путь изучения Python, думаем, вы уже не раз сталкивались с сообщениями об ошибке. Теперь более явно указывается участок кода с ошибкой, а также появились подсказки, что же именно пошло не так и почему возникла ошибка. Например, если мы забыли закрыть скобку, сообщение об ошибке укажет на эту проблему, а не просто подчеркнёт место в коде, где нарушен синтаксис языка.
● Добавление новых статистических функций, работающих «из коробки», таких как correlation() и linear_regression()
Теперь проводить разведочный анализ стало проще, впрочем импортировать pandas всё ещё остается хорошей идеей.
С остальными улучшениями призываем познакомиться самостоятельно, попробовав поработать в новой версии Python!
Известно, что данную конструкцию всегда можно было заменить if-elif-else, но, согласитесь, при большом количестве вариантов код выглядел весьма громоздко. Теперь с помощью конструкции match-case мы избавляемся от ненужных повторов при сравнении с разными условиями. Ура, писать многоэтажные if стало ещё проще!
● Больше подробностей в ошибках
Если вы только встали на нелёгкий путь изучения Python, думаем, вы уже не раз сталкивались с сообщениями об ошибке. Теперь более явно указывается участок кода с ошибкой, а также появились подсказки, что же именно пошло не так и почему возникла ошибка. Например, если мы забыли закрыть скобку, сообщение об ошибке укажет на эту проблему, а не просто подчеркнёт место в коде, где нарушен синтаксис языка.
● Добавление новых статистических функций, работающих «из коробки», таких как correlation() и linear_regression()
Теперь проводить разведочный анализ стало проще, впрочем импортировать pandas всё ещё остается хорошей идеей.
С остальными улучшениями призываем познакомиться самостоятельно, попробовав поработать в новой версии Python!
Forwarded from Python Community
⚡️ Что такое
Продолжаем говорить про импорт модулей. В этот раз разберём, что такое переменная
Думаю, в нескольких ваших скриптах встречается строка по типу
Чтобы не нагружать вашу программу ненужными объектами разработчики вписывают в
Всё элементарно, но чтобы почитать об этом подробнее, можете заглянуть на сайт документации.
#теория
__all__
?Продолжаем говорить про импорт модулей. В этот раз разберём, что такое переменная
__all__
и как её использовать.Думаю, в нескольких ваших скриптах встречается строка по типу
from package import *
, которая импортирует всё из модуля. Но ведь функций/классов может быть намного больше, чем вы думаете.Чтобы не нагружать вашу программу ненужными объектами разработчики вписывают в
__all__
имена доступных типов.Всё элементарно, но чтобы почитать об этом подробнее, можете заглянуть на сайт документации.
#теория
Forwarded from Python Community
⚡️ Добавляем время в программу
Модуль time позволяет замерять время выполнения кода, может заморозить программу, а также позволяет узнать текущее время.
Первую задачу выполняет функция
А вот выводом времени занимается метод
Подробнее почитать о модуле можно на сайте документации.
#миниурок #time
Модуль time позволяет замерять время выполнения кода, может заморозить программу, а также позволяет узнать текущее время.
Первую задачу выполняет функция
time()
, которая возвращает время в секундах. Для заморозки приложения используют команду sleep(seconds)
.А вот выводом времени занимается метод
strftime()
, который выводит структуру, полученную, например, из gmtime()
в определённом формате. Подробнее почитать о модуле можно на сайте документации.
#миниурок #time
Forwarded from Python Community
⚡️ Что такое
Каждый раз, когда вы запускаете программу, Python, переводит её в байткод и сохраняет в папку
Файлы с расширением .pyc и .pyo — это байткод и оптимизированный байткод. Они создаются заново, если код программы изменился.
#теория
__pycache__
На этот раз, это не переменная, а папка, внутри которой хранятся файлы .pyc и .pyo. Зачем она нужна можно почитать в PEP 3147, а здесь будет краткое объяснение.Каждый раз, когда вы запускаете программу, Python, переводит её в байткод и сохраняет в папку
__pycache__
. Это сделано в целях оптимизации и, чтобы, модули быстрее импортировались.Файлы с расширением .pyc и .pyo — это байткод и оптимизированный байткод. Они создаются заново, если код программы изменился.
#теория
Forwarded from Python Community
⚡️ Работаем с логами
Для этого в Python существует удобный модуль logging, позволяющий управлять логами в пару строк.
О том, какие уровни важности использовать, вы можете почитать в HOWTO, а подробнее о функционале модуля — в документации.
#миниурок #logging
Для этого в Python существует удобный модуль logging, позволяющий управлять логами в пару строк.
logging.getLogger(name=None)
— возвращает экземпляр логера на основе имени. Может быть полезна при разработке модулей.logging.basicConfig(**kwargs)
— позволяет задать настройки модулю, например, имя файла (filename), формат записи (format), уровень важности (level).debug()
, info()
, warning()
, error()
, critical()
— позволяют записывать информацию в логер на определённом уровне важности.О том, какие уровни важности использовать, вы можете почитать в HOWTO, а подробнее о функционале модуля — в документации.
#миниурок #logging
Forwarded from Python Community
⚡️ Что такое
Продолжаем говорить про импорт модулей. В этот раз разберём, что такое переменная
Думаю, в нескольких ваших скриптах встречается строка по типу
Чтобы не нагружать вашу программу ненужными объектами разработчики вписывают в
Всё элементарно, но чтобы почитать об этом подробнее, можете заглянуть на сайт документации.
#теория
__all__
?Продолжаем говорить про импорт модулей. В этот раз разберём, что такое переменная
__all__
и как её использовать.Думаю, в нескольких ваших скриптах встречается строка по типу
from package import *
, которая импортирует всё из модуля. Но ведь функций/классов может быть намного больше, чем вы думаете.Чтобы не нагружать вашу программу ненужными объектами разработчики вписывают в
__all__
имена доступных типов.Всё элементарно, но чтобы почитать об этом подробнее, можете заглянуть на сайт документации.
#теория
Forwarded from Python Community
⚡️ Работаем с логами
Для этого в Python существует удобный модуль logging, позволяющий управлять логами в пару строк.
О том, какие уровни важности использовать, вы можете почитать в HOWTO, а подробнее о функционале модуля — в документации.
#миниурок #logging
Для этого в Python существует удобный модуль logging, позволяющий управлять логами в пару строк.
logging.getLogger(name=None)
— возвращает экземпляр логера на основе имени. Может быть полезна при разработке модулей.logging.basicConfig(**kwargs)
— позволяет задать настройки модулю, например, имя файла (filename), формат записи (format), уровень важности (level).debug()
, info()
, warning()
, error()
, critical()
— позволяют записывать информацию в логер на определённом уровне важности.О том, какие уровни важности использовать, вы можете почитать в HOWTO, а подробнее о функционале модуля — в документации.
#миниурок #logging
Forwarded from Python Community
⚡️ Очередь с приоритетом
Это — разновидность очередей, в которой у каждого элемента есть свой приоритет. Модуль heapq реализует такую возможность, используя кучи — бинарные деревья, у которых родительский объект имеет значение, меньшее или равное любому из его дочерних узлов.
#миниурок #heapq
Это — разновидность очередей, в которой у каждого элемента есть свой приоритет. Модуль heapq реализует такую возможность, используя кучи — бинарные деревья, у которых родительский объект имеет значение, меньшее или равное любому из его дочерних узлов.
heappush(heap, value)
— добавляет value в heap, сохраняя инвариантность кучи.heappop(heap)
— возвращает наименьшее значение из heap. heapify(x)
— превращает итерируемый объект x в кучу.nsmallest(n, iter)
, nlargest(n, iter)
— позволяют взять n-ное количество минимальных/максимальных элементов из iter.#миниурок #heapq
Forwarded from Python Community
⚡️ Красивый вывод данных
Если вам приходится работать с выводом списков или словарей, то вы можете упростить себе работу, использовав pprint.
indent определяет количество отступов перед объектами, а width — ширину вывода. depth — сколько объектов необходимо рекурсивно раскрывать, а stream — куда записывать все данные (по умолчанию sys.stdout).
#миниурок #pprint
Если вам приходится работать с выводом списков или словарей, то вы можете упростить себе работу, использовав pprint.
PrettyPrinter(indent=1, width=80, depth=None, stream=None)
— Класс, отвечающий за перевод данных в красивый формат. indent определяет количество отступов перед объектами, а width — ширину вывода. depth — сколько объектов необходимо рекурсивно раскрывать, а stream — куда записывать все данные (по умолчанию sys.stdout).
pprint.pprint(object, ...)
— функция, упрощающая работу с классом. Принимает object, который необходимо вывести и те же параметры, что и PrettyPrinter.#миниурок #pprint
Forwarded from Python School
Красивый вывод списка (ч.1)
Обычный формат вывода списка с помощью print не очень удобен. Конечно, становится понятно, что из себя представляет список, но чаще всего пользователь не хочет видеть кавычки вокруг каждого элемента.
Метод join преобразовывает список в строку, рассматривая каждый элемент как строку.
Обычный формат вывода списка с помощью print не очень удобен. Конечно, становится понятно, что из себя представляет список, но чаще всего пользователь не хочет видеть кавычки вокруг каждого элемента.
Метод join преобразовывает список в строку, рассматривая каждый элемент как строку.
Forwarded from Python School
Queue (ч.1)
Python поддерживает многопоточность, в использовании которой помогает стандартный модуль Queue.
Он позволяет реализовывать такую структуру данных, как очередь. Очереди позволяют добавлять и извлекать элементы согласно определённому правилу.
Python поддерживает многопоточность, в использовании которой помогает стандартный модуль Queue.
Он позволяет реализовывать такую структуру данных, как очередь. Очереди позволяют добавлять и извлекать элементы согласно определённому правилу.
Forwarded from Python School
Queue (ч.2)
Очереди «первым пришёл — первым ушёл» («first in, first out», FIFO) позволяют извлекать объекты в порядке их добавления. Из очередей «последним пришёл — первым ушёл» («last in, first out», LIFO) можно извлекать последние добавленные объекты.
Наконец, приоритетные очереди позволяют извлекать объекты согласно порядку их сортировки.
Очереди «первым пришёл — первым ушёл» («first in, first out», FIFO) позволяют извлекать объекты в порядке их добавления. Из очередей «последним пришёл — первым ушёл» («last in, first out», LIFO) можно извлекать последние добавленные объекты.
Наконец, приоритетные очереди позволяют извлекать объекты согласно порядку их сортировки.
Forwarded from Python School
Подсчет вхождений в список
Используйте Counter из библиотеки коллекций, чтобы получить словарь с подсчетом всех уникальных элементов в списке
Используйте Counter из библиотеки коллекций, чтобы получить словарь с подсчетом всех уникальных элементов в списке