Основы Python #7: пространство имен, область видимости

  Рет қаралды 34,208

Oleg Molchanov

Oleg Molchanov

Күн бұрын

Мои курсы:
Boosty:
boosty.to/omol...
Patreon:
/ karty-vsekh-41011404
Что такое пространство имен и что такое область видимости.
В чем разница. Зачем нужно
Серия уроков по основам Python

Пікірлер: 69
@lck5217
@lck5217 5 жыл бұрын
циклы и условия не создают неймспейс
@zaemiel
@zaemiel 5 жыл бұрын
вы правы. Нужно было об этом сказать.
@ИванИванов-н9т9ъ
@ИванИванов-н9т9ъ 5 жыл бұрын
Здесь точно новички собрались?
@sergeizub9048
@sergeizub9048 5 жыл бұрын
@@ИванИванов-н9т9ъ Да уж, как то наш "гуру" резко зарулил...
@arcsin4083
@arcsin4083 4 жыл бұрын
важное уточнение, спасибо!
@15bleach51
@15bleach51 4 жыл бұрын
@@zaemiel добавьте текстовую вставку поверх видео
@databox4279
@databox4279 10 ай бұрын
Олег объясняет как боженька. В связке с GPT чатом, который не устает отвечать на вопросы, это что-то не реальное. Огромная Вам благодарность за ваши труды.
@rushmaster_
@rushmaster_ 9 ай бұрын
Спасибо за идею - тоже попробую)
@fle4er4887
@fle4er4887 4 жыл бұрын
Спасибо Олег. У тебя преподавательский талант. Без пафоса и все грамотно с деталями.
@hlwn172
@hlwn172 3 жыл бұрын
Охрененные уроки чтобы пройтись по базе! Олегу Спасибо!
@aleksprimetv
@aleksprimetv 5 жыл бұрын
Олег просто красавчик, все без спешки и подробно, продолжай в том же духе! А хейтеров бань.
@zaemiel
@zaemiel 5 жыл бұрын
Спасибо
@АлексейБыстревский-ы6ь
@АлексейБыстревский-ы6ь 3 жыл бұрын
А мне в 2х смотреть призодится)
@Python_in_UA
@Python_in_UA 2 жыл бұрын
И получите очередного Путина и войну со всем миром.... Обратная связь всегда нужнее уверенности в собственной правоте
@elenalevasheva3830
@elenalevasheva3830 Жыл бұрын
Вот, как все оказывается ... Супер много узнала. Спасибо за урок
@rafmio
@rafmio 2 жыл бұрын
Олег, конечно, жарит, в 6 утра записывает видосы )
@leomysky
@leomysky 4 жыл бұрын
Отличные уроки, всё просто супер
@alexfish289
@alexfish289 4 жыл бұрын
4:59 - что такое пространство имен. scope 9:09 - область видимости.
@picha_titan
@picha_titan 4 жыл бұрын
Я конечно новичок (не газ), но кажется что в Пайтона это удобно реализовано, и делает его хорошим средством программирования. Такое мощное средство. Круто.
@J1mDGriz
@J1mDGriz 2 жыл бұрын
Спасибо за видос Вы объяснили в этом и уроке №6 то, что очень долго не мог понять и 2 преподавателя по каким-то причинам так и не смогли до меня донести нужную информацию. В процессе обучения Python перешёл на IDE PyCharm. В этой IDE постоянно получал ошибку-предупреждение "shadows name 'x' from outer scope" и никак не мог понять, что это и как от неё избавиться. только сейчас всё это понял понял ещё, что вовсе не обязательно аргументы функции должны совпадать с именами внешних переменных Короче, респект!
@АлександрРюмин-п5ы
@АлександрРюмин-п5ы 3 жыл бұрын
Добрый день, Олег! Спасибо за урок! Я как раз экспериментирую с областями видимости и обнаружил проблему, природу которой не могу понять Имеется модуль Choice, содержащий ряд функций (функции перезаписывают Chosen_Case, для чего импортируют другие модули). В глобальной области видимости есть словарь Chosen_Case, на элементах которого построен интерфейс приложения и словарь ALL_N, содержащий названия модулей, к которым можно обратиться из модуля Choice. В сильно урезанном виде это выглядит примерно так: Chosen_Case = {‘Text’:’Welcome!’} ALL_N = {‘a’:’A’, ‘b’:’B’} def extractor(self, *args): from Choice import value as S global Chosen_Case Chosen_Case = S() self.Case_Text.text = Chosen_Case['Text'] # выводит текст в соответствующую Label for key, value in ALL_N.items(): btn_n = Button(text=key) btn_n.bind(on_press=self.extractor) При запуске приложения цикл for благополучно создает кнопки с именами из словаря ALL_N, но при нажатии на такую кнопку возникает ошибка: в модуле Choice нет элемента value. Пробовал объявить global value и non-local value и даже прописывать value в качестве аргумента функции extractor. Увы, интерпретатор твердит, что такого элемента в модуле Choice нет. Я не понимаю, почему на этапе вызова функции value перестает быть ссылкой на значение в словаре ALL_N и становится самостоятельным именем, которое интерпретатор пытается найти в модуле Choice
@ГригорийСитёв
@ГригорийСитёв 4 жыл бұрын
Ты настолько понятно объясняешь, что даже мой мопс всё понял ))
@Вагулик-и4е
@Вагулик-и4е 3 жыл бұрын
Очень все понятно,спасибо!
@hekNt
@hekNt 4 жыл бұрын
Один момент оказался непонятен. 12:57. Когда мы запускаем код все просто name в locals() и name получили одно и тоже значение "Pupkin". Так и должно быть 13:10. name получило значение из enctype "in a()" и... name в locals() получило тоже значение! Пространство имен шагнуло следом за name по области видимости? 13:50. Самое интересное. С name все понятно "Eroha". Но что же случилось с locals()? Оно передумало идти по пространству имен за name или ее сдерживает какой-то механизм? Или что-то еще? Почему словарь оказался пустой? Автор обговаривает, что происходит с переменной и областью видимости, но не говорит об этом выборочном поведении пространства имен. Момент с исключением вполне понятнен
@ata.ibragimoff
@ata.ibragimoff 4 жыл бұрын
Нашёл объяснение?
@ebawer3892
@ebawer3892 4 жыл бұрын
Все кто задался таким же вопросом. Погуглите про замыкания в python
@ИванИванов-н9т9ъ
@ИванИванов-н9т9ъ 5 жыл бұрын
Ещё бы желательно было бы про служебное слово 'global' рассказать, ведь иногда нужно не только увидеть значение переменной глобального уровня, но и изменить его из функции. За объяснение спасибо, помогло упорядочить знания по теме.
@zaemiel
@zaemiel 5 жыл бұрын
для этого лучше использовать словари на глобальном уровне. Поэтому не стал про global говорить.
@ИванИванов-н9т9ъ
@ИванИванов-н9т9ъ 5 жыл бұрын
@@zaemiel Признаюсь, не в курсе, о чем речь.
@zaemiel
@zaemiel 5 жыл бұрын
просто создаете глобальный словарь с нужными ключами и значениями. Затем, когда нужно - изменяете этот словарь. Это же изменяемый тип - очень удобно.
@ИванИванов-н9т9ъ
@ИванИванов-н9т9ъ 5 жыл бұрын
@@zaemiel Проверил, действительно работает! Спасибо Вам.
@АйдарШарипов-р7е
@АйдарШарипов-р7е 4 жыл бұрын
@@zaemiel Нужно создать словарь просто в глобальной области видимости или используя служебное слово global?
@Gleb_Pastushenko
@Gleb_Pastushenko 3 жыл бұрын
4:35 думаю это не совсем удачный пример. Тут важнее другая причина, по которой переменная name не была изменена - потому что не была вызвана функция, соответственно не отработали операторы в теле функции, а при определении функции её тело не исполняется.
@АвэН-ь4ы
@АвэН-ь4ы 4 жыл бұрын
Отлично , сразу подписался и поставил лайк ))))
@liferesearcher5648
@liferesearcher5648 3 жыл бұрын
А как вынести переменную из локальной видимости, из функции?
@dimabonds9850
@dimabonds9850 4 жыл бұрын
Спасибо
@DJ-lp6jr
@DJ-lp6jr 5 жыл бұрын
4:40 Ну и еще не поменялось потому, что [ даже если бы в функции было global name, то ] самого вызова функции не было.
@strimexify
@strimexify 4 жыл бұрын
Отсутствие фигурных скобок и жесткое регулирование отступов, конечно, сбивают с толку. Очено сложно после языков типа С++ и С#. Точек с запятой тоже нет, это мешает, как будто есть какая-то незавершенность, как будто что-то делал и недоделал, и бросил. Но зато успокаивает хороший звук, грамотная речь и отличная подача материала.
@iBarBQ
@iBarBQ 3 жыл бұрын
Может кто то подсказать, как в Visual studio Code так же быстро как Олег закомментировать сразу несколько строк?
@masterjack_
@masterjack_ 3 жыл бұрын
Комбинация клавиш: Ctrl + K затем Ctrl + C. Раскомментировать: Ctrl + K затем Ctrl + U
@iBarBQ
@iBarBQ 3 жыл бұрын
@@masterjack_ спасибо!
@dmitryleiko2869
@dmitryleiko2869 5 жыл бұрын
Лайк однозначно :)
@pythondeveloper6315
@pythondeveloper6315 5 жыл бұрын
Если нужна помощ пишите)
@sergeizub9048
@sergeizub9048 5 жыл бұрын
Вот от тебя помоЩ точно не нужна ))))
@pythondeveloper6315
@pythondeveloper6315 5 жыл бұрын
@@sergeizub9048 Обидно...
@sergeizub9048
@sergeizub9048 5 жыл бұрын
@Alejandro Rodriguez Автор просто крайне непоследовательно подаёт информацию. Locals - это вызов локальных данных из "словарей" в Phyton, о которых он только заикнулся, но толком не объяснял. Поэтому Вы ничего и не поняли, уважаемый. А автору дизлайк за отвратительную подачу!
@pythondeveloper6315
@pythondeveloper6315 5 жыл бұрын
@Alejandro Rodriguez Доброго вечера. Функцию locals () обычно используют в функциях, чтобы получить список переменных заданных в теле функции, и их значения. Например def a (): print (locals ()) выведет {} a вот это def a (): variable1 = 1 variable2 = 2 print(locals()) a () выведет { "variable1": 1, "variable2": 2} Надеюсь понятно объяснил
@aleksprimetv
@aleksprimetv 5 жыл бұрын
@@sergeizub9048 ты вообще хоть правильно напиши название языка, прежде чем автора видео критиковать!
@vladvulcan
@vladvulcan 3 жыл бұрын
элементарно же... где задал переменную, там она и находится
@oxygensss4390
@oxygensss4390 4 жыл бұрын
4:05 забыл запустить функцию
@alexanderpadalka5708
@alexanderpadalka5708 3 жыл бұрын
@TheVellymo
@TheVellymo 5 жыл бұрын
А я же правильно понимаю, что одной области видимости соответствует только одно пространство имен?
@zaemiel
@zaemiel 5 жыл бұрын
нет. Пространство имен - это словарь. Область видимости - это цепочка пространств имен, в котором Python ищет определение имен.
@yvictor2103
@yvictor2103 4 жыл бұрын
+
@sergeizub9048
@sergeizub9048 5 жыл бұрын
По ходу автор ролика на последних его минутах только сам понимает, о чём говорит... Если ты так объясняешь, чувак, перестань заливать видосы!
@aleksprimetv
@aleksprimetv 5 жыл бұрын
Потеряйся чувак отсюда, если ты тупой как валенок, то тебе никто не поможет!
@zaemiel
@zaemiel 5 жыл бұрын
почему вы сделали такой вывод? Я что-то неправильно говорю?
@alextype1
@alextype1 4 жыл бұрын
@@zaemiel не слушай спыцыалистафф . Хорошие уроки, по крайней мере для таких людей как я, только начинающих в это дело вникать.
@leomysky
@leomysky 4 жыл бұрын
Отличные уроки, всё просто супер
@rushmaster_
@rushmaster_ 9 ай бұрын
Спасибо
@sisoniykvitaliy7172
@sisoniykvitaliy7172 3 жыл бұрын
Отличные уроки, всё просто супер
Основы Python #8: if, else, boolean
22:53
Oleg Molchanov
Рет қаралды 23 М.
When u fight over the armrest
00:41
Adam W
Рет қаралды 25 МЛН
бабл ти гель для душа // Eva mash
01:00
EVA mash
Рет қаралды 8 МЛН
Real Man relocate to Remote Controlled Car 👨🏻➡️🚙🕹️ #builderc
00:24
JWT авторизация. Основы JWT - механизма.
6:45
Хочу вАйти
Рет қаралды 15 М.
Тестирование с помощью Mock-ов в Python #1
15:38
Основы Python #13: Работа с файлами, with
16:42
Oleg Molchanov
Рет қаралды 38 М.
Основы Python #15: Исключения
16:16
Oleg Molchanov
Рет қаралды 29 М.
Основы Python #9: списки
25:15
Oleg Molchanov
Рет қаралды 25 М.