#48. Импорт собственных модулей | Python для начинающих
Вставка
- Опубліковано 5 жов 2021
- Обучающий курс: stepik.org/course/100707
Узнаете, как создавать и импортировать свои собственные модули в программах на языке Python. Коллекция sys.path. Перекрестный импорт. Обновление модуля с помощью функции reload() библиотеки importlib.
Telegram-канал: t.me/python_selfedu
Наконееееец то я понял этот пресловутый __name__ == __main__ . Я столько материала пересмотрел и все в один голос: что бы сделать модуль запускаемым пропишите это фрагмент кода.... Всё!! на этом объяснение у всех почему то заканчивается!!! Откуда этот __name__? зачем проводить условие сравнения с __main__? ощущение как будто эти псевдоПреподователи зазубрили и крепко держат у себя в уме(просто напишу этот фрагмент кода и всё по идее будет работать, а моей аудитории скажу что этот фрагмент делает модуль запускаемым🤯🤯🤯🤯). Спасибо тебе Сергей! Жаль я столько времени, усилий и денег потратил на прочие ресурсы обучения. Твои способности доносить до слущающего просто великолепны! Я сдерживался все это время чтобы оценить тебя как знающего свое дело как преподаватель (ну учит в целом не плохо, получше остальных, но с каждым разом убеждался(вот же очередной внятный ответ на мои вопросы) все больше и больше, и этот загадочный __name__==__main__ стал МЕГАочевидным для меня, чего раньше я никак не мог впустить себе в голову и откладывал на неопределенное время!!)
Отдельное спасибо, что делаете уроки с удобным масштабом для смартфонов. Очень помогает
СПАСИБО! я наконец-то поняла зачем нужна конструкция со сравнением __name__ и __main__ :)
Как всегда всё по сути, без воды и строго по делу. Спасибо за прекрасный урок!
спасибо за разъяснения про path. Невероятно понятные и грамотные уроки
Чем больше смотрю курс,тем больше он мне нравится
Спасибо тебе Добрый Человек!!!!!
жаль нельзя лайк несколько раз поставить, респект за такие уроки
Никак не мог найти как повторно импортировать модуль, importlib.reload() помог, спасибо за информацию!
просто огоромнейшее спасибо, все очень доступно обьясняете
УРА! НАконец-то мне нормально объяснили про __main__ )) СПасибо
+1
Я и не думал, что создание и импорт своих модулей так прост )
Спасибо!
очень круто про импорт собственных модулей, отличный и познавательный урок!
Тут всё вроде понятно, но с другой стороны немного запутанно и придётся проходить ещё не один раз, всё равно респект!
Просто супер про импорты, хто самая темная тема в питоне )
Сергей, шикарное объяснение. Спасибо!
Однозначно в самые первые закладки по Python. Пол дня лопатил какой то кал в интернете. Толком ни кто объяснить не может. У вас всё как всегда по полочкам и в одном месте. Огромное спасибо!
Очень печально, что у хороших видео-обучалок питону мало просмотров.
КАТАЛОГ, ФОЛДЕР, ДИРЕКТОРИЯ - это просто синонимы к привычному слову ПАПКА, которые употребляются в зависимости от контекста.
это на случай, если кого-то испугали или запутали незнакомые слова.
@selfedu, Вас уже возможно поправляли на эту тему, но я на всякий случай сделаю замечание:
'MATH' на английском читается как 'МАТ', либо, как учат питерских блогеров, 'МАФ'. A 'MAЧ' у современных учащихся вызывает любые ассоциации, но только не связанные с математикой.
то же самое относительно слова 'PATH' и ему подобным
непосредственно по теме урока вопросов нет. доходчиво, как всегда!
Спасибо. Лучше, чем я ожидал )
Спасибо ! Многое для себя уяснил!
очень полезно и поучительно, спасибо
ты красава. просто классные объяснения
Круто, наконец то я понял зачем нужен main =name., Спасибо за объяснение!
Спасибо за урок. Разберите пожалуйста, как импортировать функцию из модуля, если головной проект лежит в Папке №1 -> Модуль X, а нужная функция в Папке № 2 -> Модуль Y ? Папки друг в друга не вложены. И правильно ли будет засунуть эти папки (каталоги) в пакет и через __init__ импортировать нужную функцию?
Спасибо, но никогда не привыкну к match и patch)
спасибо!👏👍
Спасибо за абсолютный импорт
Спасибо!!!
Спасибо
А в чем разница 'текущий каталог' и 'рабочий каталог'. Текущий каталог это тот в котором выполняется программа. Но в примере рабочий не является текущим он просто внешний.
Спасибо! Очень крутой урок.
Рабочий каталог устанавливается окружением, в данном случае PyCharm, это тот каталог, относительно которого определяются другие каталоги, если используются относительные пути. А текущий - это тот, в котором находится модуль (файл py).
@@selfedu_rus Так и подумал сперва, спасибо !
спасибо
Спасибо за уроки. Было бы хорошо показать разбиение на модули в программе с ООП.
👍👍👍👍👍
math читается - месс а не мач но всьо равно уроки крутые не смотря на то что пайтон требует время
Спасибо за урок!
Но сколько бы я не импортировал свои модули, то они работают, но нет отображения тех функций, что я импортировал. После точки он не предлагает мне возможные имена из импортированного модуля... кеш обновлял и всё ровно..
Спасибо, очень лаконично и по делу 💪
А что делать в ситуации, когда, например, написал свой модуль, в котором использовал импорт функции, пусть будет синус из math. При импорте этого своего модуля все равно повляется возможность импортировать не только "свои" функции, но и этот злосчастный синус. Как его скрыть от глаз пользователя? Ну этот синус совсем не к месту будет в IDE выпрыгивать в подсказках при обращении к модулю. А если для написания своих функций в модуле использовал кучу сторонних пакетов, то вообще получается не очень - образаешься к модулю, а там сборная солянка из своих функций, и функций из других пакетов...
Внутренние ф-ии следует начинать с _. Лучше делать from math import sin as _sin, и использовать внутри кода в таком виде (_sin). Тогда этот _sin должен игнорироваться IDE.
Legend
👍
А как можно так-же, делать 3 модуля как у вас, на телефоне?
Циклический импорт, __all__, поведение с подчеркивания - не раскрыто.
*Здравствуйте будет ли уроки по парсингу сайтов*
Всё реально круто , но прям режет слух библиотека «мач» наверно она от математики сократилась , «мэс» наверное правильно
Так как преподаватель не всегда знает где у новичка возникнет вопрос задам ег я пока я ещё новичёк ))))
В видео на ua-cam.com/video/hWsBYrASuqU/v-deo.html времени есть выражение
- ПОВТОРНО ИМПОРТИРОВАТЬ.....
ВОПРОС :
Зачем это нужно, для чего нужно и так далее.
В курсе степика нет объяснения для чего это нужно, в каких случаях используется, нет примера из жизниб что-бы не просто запомнить информацию ( напомню я новичек- чайник) а ПОНЯТЬ в чем смысл такого метода как повторный запуск import если он уже прописан в начале файла..... (((((
То есть если в 2х фалах вызывающих друг друга, если будет import и importlib.reload , то в таком случае они уже будут вызывать друг друга до бесконечности?
Ха, не пробовал ) Думаю, при reload будет перегружаться только текущий модуль, но не связанные с ним, но нужно проверять!
Проверил, бесконечного цикла нет, но оно как то очень странно работает, странная последовательность выполнения действий.
Но я не особо шарю в этом всем, поэтому хз почему так.
Если в 1м коде ex1:
-----------------------------
import importlib
import ex2
print('1.1')
importlib.reload(ex2)
print('1.2')
------------------------------
А во 2м ex2:
-------------------------------
import importlib
import ex1
print('2.1')
importlib.reload(ex1)
print('2.2')
-------------------------------
Выдает при запуски 1го файла:
-----------------------------------------
1.1
2.1
1.1
1.2
2.2
1.2
2.1
1.1
2.1
2.2
1.2
2.2
1.1
2.1
1.1
1.2
2.2
1.2
---------------------------------
@@selfedu_rus , а вот будет круто, если найдёте объяснение тому поведению, что продемонстрировал @Юра Радионов
Стоп а main пишется если именно в этом файле который был запущен не было import просто в функции def float print есть mymodule а это ссылка на файл ex1 а там есть import или я что-то неправильно понял mymodule в print это ссылка на файл mymodule в файле ex1?
Объясните пожалуйста
Я правильно понимаю, что добавленный через sys.path.append модуль будет доступен только в текущей сессии?
не пробовал, скорее всего, т.к. sys обнулится потом
Автоматом выставил from folder import mymodule
А что такое рабочий каталог, как Python определяет это?
Здравствуйте, вы берете заказы? Как можно с вами связаться. Мне нужно лабу по нейронным сетям сделать
Вот, специально написал: ua-cam.com/users/postUgybNtp2jm5lG5sdUS54AaABCQ
import sys
sys.path.append(r"d:\Programm files\python va spyder\Fayl saqlanmalar\folder\")
import folder.Ruscha1
import pprint
pprint.pprint(sys.path)
SyntaxError - показывает такую ошибку
unterminated string literal (direkt at line 2)
будет ли продолжения курса на Stepik&
пока незнаю, непросто это )
@@selfedu_rus я понимаю , но все же надеюсь что вы сможете (
Спасибо за хороший курс. Однако на будущее советую английские слова поизносить правильно. Math читает, как мас. Не путать с популярным словом match - мaтч
path - пас (путь). не путать с patch - заплпата, также часто используемое в программировании слово
Не кАталог, а каталОг. Или тогда уж просто папка
Чел, тебе не пофигу ли? Вы на такие мелочи обращаете внимание, когда автор даёт кладезь полезной инфы. Походу у меня есть кумир преподавания. Спасибо Автору!
в Visual Studio Code не получается запустить функцию в другом окне, может кто то объяснить как это сделать?
Просто качаешь пайчарм и все
А как питон определяет рабочий каталог?
у него есть предустановленные пути поиска библиотек + тот каталог, что определен текущим проектом в PyCharm (обычно, это каталог запускаемого файла)
@@selfedu_rus спасибо. То есть это сама среда PyCharm настраивает? А если я через обычный редактор запускаю? Можно как то вручную это сделать?
@@user-cf2lc2rq4v да, прописать путь в коллекции sys.path
так как задавать имя модуля?)))
это имя файла
Як же "мач" ріже вуха
патч-матч - очень смешно)
"Уот это уотА" тоже доставляет.
Не работает,не верю!
супер, но много слов паразитов - вот так вот, вот это вот, вот такой
Что еще за ката́лог? Невозможно слушать, исправляйтесь!
Спасибо
спасибо