#48. Импорт собственных модулей | Python для начинающих

Поділитися
Вставка
  • Опубліковано 5 жов 2021
  • Обучающий курс: stepik.org/course/100707
    Узнаете, как создавать и импортировать свои собственные модули в программах на языке Python. Коллекция sys.path. Перекрестный импорт. Обновление модуля с помощью функции reload() библиотеки importlib.
    Telegram-канал: t.me/python_selfedu

КОМЕНТАРІ • 86

  • @user-pe8ck2vr6o
    @user-pe8ck2vr6o Рік тому +8

    Наконееееец то я понял этот пресловутый __name__ == __main__ . Я столько материала пересмотрел и все в один голос: что бы сделать модуль запускаемым пропишите это фрагмент кода.... Всё!! на этом объяснение у всех почему то заканчивается!!! Откуда этот __name__? зачем проводить условие сравнения с __main__? ощущение как будто эти псевдоПреподователи зазубрили и крепко держат у себя в уме(просто напишу этот фрагмент кода и всё по идее будет работать, а моей аудитории скажу что этот фрагмент делает модуль запускаемым🤯🤯🤯🤯). Спасибо тебе Сергей! Жаль я столько времени, усилий и денег потратил на прочие ресурсы обучения. Твои способности доносить до слущающего просто великолепны! Я сдерживался все это время чтобы оценить тебя как знающего свое дело как преподаватель (ну учит в целом не плохо, получше остальных, но с каждым разом убеждался(вот же очередной внятный ответ на мои вопросы) все больше и больше, и этот загадочный __name__==__main__ стал МЕГАочевидным для меня, чего раньше я никак не мог впустить себе в голову и откладывал на неопределенное время!!)

  • @KonstantinPrydnikov1
    @KonstantinPrydnikov1 2 роки тому +19

    Отдельное спасибо, что делаете уроки с удобным масштабом для смартфонов. Очень помогает

  • @anfcos
    @anfcos Рік тому +8

    СПАСИБО! я наконец-то поняла зачем нужна конструкция со сравнением __name__ и __main__ :)

  • @vladimirastrelin1719
    @vladimirastrelin1719 Рік тому +6

    Как всегда всё по сути, без воды и строго по делу. Спасибо за прекрасный урок!

  • @aleksandr_nokhrin
    @aleksandr_nokhrin Рік тому +3

    спасибо за разъяснения про path. Невероятно понятные и грамотные уроки

  • @problemrihot8497
    @problemrihot8497 9 місяців тому +3

    Чем больше смотрю курс,тем больше он мне нравится

  • @dizogdizog2591
    @dizogdizog2591 5 місяців тому +2

    Спасибо тебе Добрый Человек!!!!!

  • @denchp253
    @denchp253 9 місяців тому +3

    жаль нельзя лайк несколько раз поставить, респект за такие уроки

  • @straxd
    @straxd Рік тому +2

    Никак не мог найти как повторно импортировать модуль, importlib.reload() помог, спасибо за информацию!

  • @user-qj6tk5fw9p
    @user-qj6tk5fw9p Рік тому +2

    просто огоромнейшее спасибо, все очень доступно обьясняете

  • @diplomdeady
    @diplomdeady 2 роки тому +5

    УРА! НАконец-то мне нормально объяснили про __main__ )) СПасибо

  • @nikgavrilov993
    @nikgavrilov993 2 роки тому +5

    Я и не думал, что создание и импорт своих модулей так прост )
    Спасибо!

  • @onemasterlomaster1829
    @onemasterlomaster1829 2 роки тому +3

    очень круто про импорт собственных модулей, отличный и познавательный урок!

  • @tbassir9076
    @tbassir9076 Рік тому +2

    Тут всё вроде понятно, но с другой стороны немного запутанно и придётся проходить ещё не один раз, всё равно респект!

  • @alexgump3725
    @alexgump3725 Рік тому +2

    Просто супер про импорты, хто самая темная тема в питоне )

  • @Ruslan501
    @Ruslan501 5 місяців тому +1

    Сергей, шикарное объяснение. Спасибо!

  • @kiber7575
    @kiber7575 2 місяці тому

    Однозначно в самые первые закладки по Python. Пол дня лопатил какой то кал в интернете. Толком ни кто объяснить не может. У вас всё как всегда по полочкам и в одном месте. Огромное спасибо!

  • @max325475685
    @max325475685 Рік тому +21

    Очень печально, что у хороших видео-обучалок питону мало просмотров.

  • @johnmazepa
    @johnmazepa Рік тому +2

    КАТАЛОГ, ФОЛДЕР, ДИРЕКТОРИЯ - это просто синонимы к привычному слову ПАПКА, которые употребляются в зависимости от контекста.
    это на случай, если кого-то испугали или запутали незнакомые слова.

  • @johnmazepa
    @johnmazepa Рік тому +2

    @selfedu, Вас уже возможно поправляли на эту тему, но я на всякий случай сделаю замечание:
    'MATH' на английском читается как 'МАТ', либо, как учат питерских блогеров, 'МАФ'. A 'MAЧ' у современных учащихся вызывает любые ассоциации, но только не связанные с математикой.
    то же самое относительно слова 'PATH' и ему подобным

    • @johnmazepa
      @johnmazepa Рік тому

      непосредственно по теме урока вопросов нет. доходчиво, как всегда!

  • @andredru4278
    @andredru4278 4 місяці тому +1

    Спасибо. Лучше, чем я ожидал )

  • @donfedor007
    @donfedor007 2 роки тому +2

    Спасибо ! Многое для себя уяснил!

  • @bienerustv4715
    @bienerustv4715 2 роки тому +3

    очень полезно и поучительно, спасибо

  • @raman_chmirou
    @raman_chmirou Рік тому +1

    ты красава. просто классные объяснения

  • @vitalybessonov6138
    @vitalybessonov6138 Рік тому +1

    Круто, наконец то я понял зачем нужен main =name., Спасибо за объяснение!

  • @nickyr42
    @nickyr42 2 роки тому +4

    Спасибо за урок. Разберите пожалуйста, как импортировать функцию из модуля, если головной проект лежит в Папке №1 -> Модуль X, а нужная функция в Папке № 2 -> Модуль Y ? Папки друг в друга не вложены. И правильно ли будет засунуть эти папки (каталоги) в пакет и через __init__ импортировать нужную функцию?

  • @ildarvalitov2568
    @ildarvalitov2568 Рік тому +2

    Спасибо, но никогда не привыкну к match и patch)

  • @jamjam3337
    @jamjam3337 Рік тому +2

    спасибо!👏👍

  • @user-gb3hi2uf1q
    @user-gb3hi2uf1q 2 роки тому +2

    Спасибо за абсолютный импорт

  • @sergeykarandeev4303
    @sergeykarandeev4303 2 роки тому +2

    Спасибо!!!

  • @user-dn7vq7uv8p
    @user-dn7vq7uv8p 4 місяці тому +1

    Спасибо

  • @mrup7192
    @mrup7192 2 роки тому +3

    А в чем разница 'текущий каталог' и 'рабочий каталог'. Текущий каталог это тот в котором выполняется программа. Но в примере рабочий не является текущим он просто внешний.
    Спасибо! Очень крутой урок.

    • @selfedu_rus
      @selfedu_rus  2 роки тому +2

      Рабочий каталог устанавливается окружением, в данном случае PyCharm, это тот каталог, относительно которого определяются другие каталоги, если используются относительные пути. А текущий - это тот, в котором находится модуль (файл py).

    • @mrup7192
      @mrup7192 2 роки тому

      @@selfedu_rus Так и подумал сперва, спасибо !

  • @gayratsaidakhmedov5451
    @gayratsaidakhmedov5451 6 місяців тому +1

    спасибо

  • @user-pr7gy3bq7n
    @user-pr7gy3bq7n 9 місяців тому +1

    Спасибо за уроки. Было бы хорошо показать разбиение на модули в программе с ООП.

  • @impellergimpeller5133
    @impellergimpeller5133 2 роки тому +3

    👍👍👍👍👍

  • @amirtop335
    @amirtop335 Рік тому +2

    math читается - месс а не мач но всьо равно уроки крутые не смотря на то что пайтон требует время

  • @user-yk2zc8vy6u
    @user-yk2zc8vy6u 2 роки тому +3

    Спасибо за урок!
    Но сколько бы я не импортировал свои модули, то они работают, но нет отображения тех функций, что я импортировал. После точки он не предлагает мне возможные имена из импортированного модуля... кеш обновлял и всё ровно..

  • @Narendill
    @Narendill Рік тому +1

    Спасибо, очень лаконично и по делу 💪
    А что делать в ситуации, когда, например, написал свой модуль, в котором использовал импорт функции, пусть будет синус из math. При импорте этого своего модуля все равно повляется возможность импортировать не только "свои" функции, но и этот злосчастный синус. Как его скрыть от глаз пользователя? Ну этот синус совсем не к месту будет в IDE выпрыгивать в подсказках при обращении к модулю. А если для написания своих функций в модуле использовал кучу сторонних пакетов, то вообще получается не очень - образаешься к модулю, а там сборная солянка из своих функций, и функций из других пакетов...

    • @trasheskit
      @trasheskit 11 місяців тому

      Внутренние ф-ии следует начинать с _. Лучше делать from math import sin as _sin, и использовать внутри кода в таком виде (_sin). Тогда этот _sin должен игнорироваться IDE.

  • @mingboevnurullo
    @mingboevnurullo 7 місяців тому +1

    Legend

  • @ibrahimoglu
    @ibrahimoglu 2 роки тому +2

    👍

  • @ld_xameleon_ld6384
    @ld_xameleon_ld6384 Рік тому +2

    А как можно так-же, делать 3 модуля как у вас, на телефоне?

  • @kurtmiller77
    @kurtmiller77 2 роки тому +2

    Циклический импорт, __all__, поведение с подчеркивания - не раскрыто.

  • @alisher9442
    @alisher9442 2 роки тому +2

    *Здравствуйте будет ли уроки по парсингу сайтов*

  • @user-dp2bf4vs1f
    @user-dp2bf4vs1f Рік тому +2

    Всё реально круто , но прям режет слух библиотека «мач» наверно она от математики сократилась , «мэс» наверное правильно

  • @gbo4net
    @gbo4net 2 роки тому +1

    Так как преподаватель не всегда знает где у новичка возникнет вопрос задам ег я пока я ещё новичёк ))))
    В видео на ua-cam.com/video/hWsBYrASuqU/v-deo.html времени есть выражение
    - ПОВТОРНО ИМПОРТИРОВАТЬ.....
    ВОПРОС :
    Зачем это нужно, для чего нужно и так далее.
    В курсе степика нет объяснения для чего это нужно, в каких случаях используется, нет примера из жизниб что-бы не просто запомнить информацию ( напомню я новичек- чайник) а ПОНЯТЬ в чем смысл такого метода как повторный запуск import если он уже прописан в начале файла..... (((((

  • @rad3
    @rad3 2 роки тому +3

    То есть если в 2х фалах вызывающих друг друга, если будет import и importlib.reload , то в таком случае они уже будут вызывать друг друга до бесконечности?

    • @selfedu_rus
      @selfedu_rus  2 роки тому +2

      Ха, не пробовал ) Думаю, при reload будет перегружаться только текущий модуль, но не связанные с ним, но нужно проверять!

    • @rad3
      @rad3 2 роки тому

      Проверил, бесконечного цикла нет, но оно как то очень странно работает, странная последовательность выполнения действий.
      Но я не особо шарю в этом всем, поэтому хз почему так.

    • @rad3
      @rad3 2 роки тому +3

      Если в 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
      ---------------------------------

    • @user-sm1pg4xx4z
      @user-sm1pg4xx4z 2 роки тому

      @@selfedu_rus , а вот будет круто, если найдёте объяснение тому поведению, что продемонстрировал @Юра Радионов

  • @ney107-iz6xl
    @ney107-iz6xl 8 місяців тому

    Стоп а main пишется если именно в этом файле который был запущен не было import просто в функции def float print есть mymodule а это ссылка на файл ex1 а там есть import или я что-то неправильно понял mymodule в print это ссылка на файл mymodule в файле ex1?
    Объясните пожалуйста

  • @a_gassi
    @a_gassi 9 місяців тому +1

    Я правильно понимаю, что добавленный через sys.path.append модуль будет доступен только в текущей сессии?

    • @selfedu_rus
      @selfedu_rus  9 місяців тому

      не пробовал, скорее всего, т.к. sys обнулится потом

  • @locky1827
    @locky1827 7 місяців тому

    Автоматом выставил from folder import mymodule

  • @fahrenheit1863
    @fahrenheit1863 10 місяців тому

    А что такое рабочий каталог, как Python определяет это?

  • @girrra1233
    @girrra1233 2 роки тому

    Здравствуйте, вы берете заказы? Как можно с вами связаться. Мне нужно лабу по нейронным сетям сделать

    • @selfedu_rus
      @selfedu_rus  2 роки тому +1

      Вот, специально написал: ua-cam.com/users/postUgybNtp2jm5lG5sdUS54AaABCQ

  • @user-ep5sr7mk9i
    @user-ep5sr7mk9i 8 місяців тому

    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)

  • @yuriitkachenko2115
    @yuriitkachenko2115 2 роки тому +2

    будет ли продолжения курса на Stepik&

    • @selfedu_rus
      @selfedu_rus  2 роки тому +1

      пока незнаю, непросто это )

    • @yuriitkachenko2115
      @yuriitkachenko2115 2 роки тому +1

      @@selfedu_rus я понимаю , но все же надеюсь что вы сможете (

  • @mikhailmozerov9021
    @mikhailmozerov9021 2 роки тому +1

    Спасибо за хороший курс. Однако на будущее советую английские слова поизносить правильно. Math читает, как мас. Не путать с популярным словом match - мaтч

    • @mikhailmozerov9021
      @mikhailmozerov9021 2 роки тому

      path - пас (путь). не путать с patch - заплпата, также часто используемое в программировании слово

    • @vpupkin
      @vpupkin Рік тому

      Не кАталог, а каталОг. Или тогда уж просто папка

    • @dailyhoroscope1139
      @dailyhoroscope1139 Рік тому

      Чел, тебе не пофигу ли? Вы на такие мелочи обращаете внимание, когда автор даёт кладезь полезной инфы. Походу у меня есть кумир преподавания. Спасибо Автору!

  • @musecollaboration
    @musecollaboration 8 місяців тому

    в Visual Studio Code не получается запустить функцию в другом окне, может кто то объяснить как это сделать?

    • @MrSasuke1337
      @MrSasuke1337 5 місяців тому

      Просто качаешь пайчарм и все

  • @user-cf2lc2rq4v
    @user-cf2lc2rq4v 2 роки тому +2

    А как питон определяет рабочий каталог?

    • @selfedu_rus
      @selfedu_rus  2 роки тому +1

      у него есть предустановленные пути поиска библиотек + тот каталог, что определен текущим проектом в PyCharm (обычно, это каталог запускаемого файла)

    • @user-cf2lc2rq4v
      @user-cf2lc2rq4v 2 роки тому +1

      @@selfedu_rus спасибо. То есть это сама среда PyCharm настраивает? А если я через обычный редактор запускаю? Можно как то вручную это сделать?

    • @selfedu_rus
      @selfedu_rus  2 роки тому +1

      @@user-cf2lc2rq4v да, прописать путь в коллекции sys.path

  • @user-jz8ik6ck8o
    @user-jz8ik6ck8o 2 роки тому +1

    так как задавать имя модуля?)))

  • @valter7331
    @valter7331 Рік тому +4

    Як же "мач" ріже вуха

  • @MrArtlex
    @MrArtlex 2 роки тому +1

    патч-матч - очень смешно)

    • @idopshik
      @idopshik 15 днів тому

      "Уот это уотА" тоже доставляет.

  • @it-kz3mo
    @it-kz3mo 9 місяців тому

    Не работает,не верю!

  • @kurtmiller77
    @kurtmiller77 2 роки тому +1

    супер, но много слов паразитов - вот так вот, вот это вот, вот такой

  • @user-mobilnik
    @user-mobilnik 3 місяці тому

    Что еще за ката́лог? Невозможно слушать, исправляйтесь!

  • @user-je5mv2nm7g
    @user-je5mv2nm7g 10 місяців тому +1

    Спасибо

  • @illiukhin
    @illiukhin 2 роки тому +2

    спасибо