⚡️ Оператор with
Если вы работаете с файлами или соединениями, то их стоит закрывать после работы. Использовать try/except/finally — не красиво и занимает много места.
Поэтому, разработчики придумали оператор with, выполняющий обязательные функции по окончанию работы с классом. Можете почитать о нём в PEP 343.
Как и у любого оператора, у with есть свои методы.
#теория #with
Если вы работаете с файлами или соединениями, то их стоит закрывать после работы. Использовать try/except/finally — не красиво и занимает много места.
Поэтому, разработчики придумали оператор with, выполняющий обязательные функции по окончанию работы с классом. Можете почитать о нём в PEP 343.
Как и у любого оператора, у with есть свои методы.
__enter__
вызывается в переданном классе с самого начала, для инициализации. А после, по окончанию работы, вызывается __exit__
.#теория #with
Что выведет код выше?
Anonymous Quiz
44%
Lorem ipsum
2%
Lorem
2%
ipsum
13%
Loremipsum
30%
Ошибку
8%
Узнать ответ
⚡️ Работаем с временем
Ранее я рассказывал о модулях для взаимодействия с временем, но их необходимо устанавливать, а вот datetime — нет.
Хоть с ним и неудобно работать в отличие от его конкурентов, с ним у вас в проекте будет меньше зависимостей. Объектов много, поэтому тут будут самые используемые.
Получить их можно с помощью
А также, используя
#миниурок #datetime
Ранее я рассказывал о модулях для взаимодействия с временем, но их необходимо устанавливать, а вот datetime — нет.
Хоть с ним и неудобно работать в отличие от его конкурентов, с ним у вас в проекте будет меньше зависимостей. Объектов много, поэтому тут будут самые используемые.
date
, time
, datetime
— классы, предоставляющие доступ к дате, времени или к всему сразу.Получить их можно с помощью
date.today()
, datetime.today()
, datetime.now()
или создав их самостоятельно, передав нужные значения, которые можно почитать в документации.А также, используя
timedelta
, мы можем менять время: добавлять, забирать и многое другое.#миниурок #datetime
⚡️ Отображаем календарь
В языке Python есть интересный модуль, позволяющий выводить календарь так же, как и программа
TextCalendar и HTMLCalendar позволяют выводить календарь в текстовом и веб форматах. Вы можете их настроить, используя методы, записанные в документации.
#миниурок #calendar
В языке Python есть интересный модуль, позволяющий выводить календарь так же, как и программа
cal
в unix-подобных системах. TextCalendar и HTMLCalendar позволяют выводить календарь в текстовом и веб форматах. Вы можете их настроить, используя методы, записанные в документации.
calendar.weekday(year, month, day)
— возвращает день недели в определённый день. Возвращает число от 0 до 6, что, соответственно, понедельник - суббота. calendar.isleap(year)
— позволяет узнать, является ли год високосным.calendar.firstweekday()
— сообщает день недели, с которого начинается неделя.#миниурок #calendar
Что выведет код выше?
Anonymous Quiz
40%
[1, 2]
5%
[2, 4]
8%
[1, 2, 1, 2]
40%
Ошибку
7%
Узнать ответ
⚡️ Работаем с окружением
Внутри операционной системы существуют некие переменные окружения. Самая популярная — 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
⚡️ Задачка с собеседования | #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
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
Условие:
Ваша задача — написать функцию, которая проверяет, может ли такая переменная существовать. Переменная не может начинаться с цифры, состоит только из символов 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
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
⚡️Создаём файловые пути
Если вы каким-то образом взаимодействуете с файлами в операционной системе, то вам необходимо создавать пути, что можно делать с помощью модуля os.path.
Вот парочка полезных функций из него:
Если вам что-то не понятно или же вам необходим больший функционал, то посетите страницу документации.
#миниурок #os
Если вы каким-то образом взаимодействуете с файлами в операционной системе, то вам необходимо создавать пути, что можно делать с помощью модуля os.path.
Вот парочка полезных функций из него:
join(path, *paths)— объединяет все пути в один, используя разделитель, если необходимо.
expandvars(path)
— заменяет имена переменных $NAME или ${NAME} на их значения. На ОС Windows разрешает использовать %NAME%.expanduser(path)
— заменяет такие компоненты как "~" или "~user" на директорию пользователя. На Linux это значение HOME, а на Windows — USERPROFILE или HOMEPATH + HOMEDRIVE.Если вам что-то не понятно или же вам необходим больший функционал, то посетите страницу документации.
#миниурок #os
⚡️ Ищем файлы по шаблону
Если вы работали с Unix-подобными ОС, то наверняка знаете, что можно выбирать файлы используя шаблоны. Вот и в Python есть такая возможность — всё благодаря модулю glob.
Подробнее о модуле вы, как обычно, можете почитать на сайте документации.
#миниурок #glob
Если вы работали с 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]
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
Условие:
Вам необходимо отсортировать список, но все парные числа должны остаться на месте.
Примеры:
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
Функционал os.path кому-то может показаться недостаточным и, чтобы не изобретать велосипед, стоит взглянуть на pathlib, добавленный с версии python 3.4.
Самый важный класс — Path. Он создаёт путь и выбирает подкласс (PosixPath, WindowsPath) на основе запущенной ОС. Подробнее можно почитать тут.
Работать с ним можно с помощью оператора "/", который добавляет второй аргумент в путь.
Ещё одной особенностью класса является совместимость с os, поскольку это PathLike объект.
P.S. Если вы используете модуль glob, то можете его не импортировать, функционал хранится в функции
pathlib.glob
.#миниурок #pathlib
Что выведет код выше?
Anonymous Quiz
11%
Hello world!
36%
Heooo worod!
19%
"Heooo worod!"
27%
Ошибку
7%
Узнать ответ
⚡️ Что такое
Представим, что вы написали небольшой скрипт, который выводит hello world при запуске. А другой программист захотел импортировать ваш модуль, поскольку там была функция print_hello().
Но вместе с импортом он получил ненужную hello world в терминал. Почему так случилось? Потому что python-код также выполняется во время импорта. Чтобы этого избежать, используют
При импорте
#теория
__name__
Заглянув в большинство скриптов вы можете увидеть строку по типу __name__ == "__main__"
. Многие новички не понимают, зачем её добавлять, если и так всё работает. Представим, что вы написали небольшой скрипт, который выводит hello world при запуске. А другой программист захотел импортировать ваш модуль, поскольку там была функция print_hello().
Но вместе с импортом он получил ненужную hello world в терминал. Почему так случилось? Потому что python-код также выполняется во время импорта. Чтобы этого избежать, используют
__name__
.При импорте
__name__
получает название модуля, а при прямом запуске (python3 script.py
) его значение будет __main__
. Подробнее вы, как обычно, можете почитать тут.#теория