Вчерашние занятия:
🔘) Около полутора часа видео (88+ минут, если быть точнее), все еще не лень считать)😄
🔘) Тесты все по темам👇 сделаны, т.к. там почти нет задач.
🔘) Пройдена глава про👇:
1) Модули и пакеты. Работа с файлами: Темы: Импорт стандартных модулей. Команды import и from; Импорт собственных модулей; Установка сторонних модулей (pip install). Пакетная установка; Пакеты (package) в Python. Вложенные пакеты; Функция open. Чтение данных из файла; Исключение FileNotFoundError и менеджер контекста (with) для файлов; Запись данных в файл в текстовом и бинарном режимах.
Основные моменты из этого материала:
0) Для начала что такое модули пакеты.
Модуль - это просто любая программа на питоне с расширением "py", а пакет - это набор(в папке) таких модулей, но где еще присутствует файл __init__.py. В нем прописывается, что будет импортироваться при команде import my_packet. Более подробно изучите сами.
1) Import.
Думаю уже все вы хоть раз этим пользовались. И знаете как это использовать, но есть несколько ньюансов и как лучше это делать. Например не надо импортировать всё, через звездочку(*). Может возникнуть конфликт имен при подключении нескольких модулей, не понятно какая функция откуда взята, в случае ошибки или неверной работы программы. Можно так же создавать эллиасы импортируемых переменных, функций, и т.д. для более короткого кода и/или возможности например задать в программе переменную/функцию с таким же именем.
Когда вы импортируете модуль в Python (с помощью import), весь его код выполняется сразу же, при чем не важно отправили ли вы весь модуль или конкретно что-то. Т.е. если у вас есть какие-то принты или вызовы функций и т.д., то они выполнятся. Это важно понимать. Я раньше не догонял почему так происходит...Ведь я же не весь собственный модуль импортировал, а только необходимые мне данные. И комментировал лишние вызовы😅 Но это можно сделать проще. Если вы не хотите, чтобы какие-то команды исполнялись в другом файле при импортировании в него другого модуля, достаточно в нем прописать:
if __name__ == '__main__':
# блок команд, которые не должны выполнять при импорте
print(f'Я хочу вывестись в другом модуле, но мне не дают это сделать!(')
Если вы запустите файл с таким содержимым напрямую, вы выполните строчки в пространстве после if. Если же вы импортируете этот модуль внутри другого файла, то код внутри этого блока не выполнится там. Так происходит потому что специальная переменная "__name__" содержит имя модуля. При прямом запуске файла она принимает значение "__main__", а при импорте — имя своего модуля. Поэтому при импорте не выполняется условие проверки и код внутри не выполняется. Надеюсь понятно объяснил)
2) Работа с файлом
Лучше всего работать с файлами из менеджера контекста. А еще желательно обворачивать это в блок в try-except. Это нужно для того, чтобы не потерять данные или не повредить файл при неуспешой работе с ним. (хотя я пока что такого не видел, но так говорят что надо😅)
3) Режимы при работе с файлом.
Есть несколько основных 'r' - от 'read' - при чтении файла, 'w' - от 'write' - при записи в файл(создает файл если не было, и перезаписывает все данные в нем, если были), 'a' от 'append' - при дозаписи в конец файла.
4) Относительные и абсолютные пути для открытия файла.
Итоги дня и выводы:
Относительно чиловый день выдался. Посмотрел, поотвечал на тесты. Но не понравилось что нет практических задач в этой главе. Так же про взаимодействие с json не рассказано. А думается мне, что с ним больше всего надо быть знакомым и уметь загружать и распарсивать данные с этим типом данных, хотя логика взаимодействия такая же. От малой практики в этой теме до сих пор путаю load(), dump(). Что грузит, чтто парсит🫡🫡🫡Есть такие же тут или я один такой забывчивый?)😁