Спасибо! Очень тщательно разбираете все возможные комбинации расположения переменных, приятно смотреть
@alexandrbelotsky63012 жыл бұрын
Лучшее объяснение, спасибо , что использовал начальные функции для объяснения, а не загадочных с каких-то с самых последних уроков, которые не знаешь для чего используется.
@Miron_Nicolaevich Жыл бұрын
Как-то интуитивно все это было понятно. Но после просмотра все стало более явным)
@lilacbush4229 Жыл бұрын
классный канал, подробно и без воды. Если кто читает комент, можете про коментировать правильно ли я понимаю, что видимость функции это в функциях, а в ооп аналогия со свойствами, чтобы изменить свойство, то применяешь класс метод и через cls ты можешь менять свойство класса, а не экземпляра
@benben-fz2es8 ай бұрын
Меня когда то учили, что если одно свойство нужно двум функциональным блокам, то эти функциональные блоки принадлежат одному логическому объекту. Читай - классу. А если это не один объект - то принципиально можно побросаться друг в друга параметрами. Это был ++, еще до джавы. Понятно, что если язык не имеет ооп, то такое не работает, но никто же не принуждает работать в ассемблере, где и гоуту вполне себе кашерно.
@МаксимЕвтишкин-н5с3 жыл бұрын
Спасибо вам огромное! Меня всё спрашивали: "Что такое global и nonlocal и в чём их разница?" и т.п. на cyberforum, я наконец-то смогу ответить!!!
@Quimorax3 жыл бұрын
Классное видео, сам много раз видел проявление болезни глобализма). Ещё у меня вопрос: стоит ли использовать nonlocal в замыканиях? Просто часто видел их в замыканиях в чужом коде и сам я использую их в замыканиях.
@PythonRussian3 жыл бұрын
против нонлокал в замыканиях ничего не имею по той простой причине, что эта переменная из внешней функции закрыта от внешнего мира, ее нельзя поменять извне не забравшись в кишки функции (а там уже сам себе редиска). То есть такое использование безопасно, в отличие от глобала, который открыт всем и каждому. Надеюсь понятно объяснил=)
@Quimorax3 жыл бұрын
@@PythonRussian Большое спасибо)
@ЛешаМакентоша27 күн бұрын
А что мы считаем изменением переменной? Любое действие кроме вывода ее значения? Или только если id объекта меняется? Например в видео про замыкания получилось без глобалов и нонлокалов сделать append списка из внешнего скоупа, но ведь это изменение?
@PythonRussian26 күн бұрын
изменение ид объекта, аппенд меняет содержимое списка, но переменная ссылается на тот же объект, потому проблем не возникает
@kochcubing2 жыл бұрын
Ушел просветленный ... Спасибо!
@coryphoenixxx8238 Жыл бұрын
Было бы неплохо тут рассказать, почему если переменная counter будет изменяемого типа, например list, то нет необходимости в nonlocal) Я вот не могу догнать)
@y18kotov2 жыл бұрын
Нет изменений, нет проблем. Спасибо.
@RuslanSkiraUkraine3 жыл бұрын
Спасибо за урок и есть вопрос. 4:19 А почему тогда принт все же не напечатал counter? т.е. scope создается до того когда интерпретатор заходит в тело функции?. И оператор равно = имеет какой то приоритет? def z2():... z2.__code__.co_varnames ->>() def z2(): z = 12 z2.__code__.co_varnames ->>('z',) Значит во время компиляции в pyc ? создается скоуп , А потом когда интерпретатор проходится построчно то уже скоуп есть?
@PythonRussian3 жыл бұрын
Руслан, ты хоть поясни про что говоришь - укажи тайминг в видео, где принт не печатает. Я же не могу пересмотреть весь видос и искать о чем ты говоришь.
@PythonRussian3 жыл бұрын
да, понял о чем ты. Объект функции создается при интерпретации ее, еще до вызова и так как внутри интерпретатор встретил +=1 то есть изменение переменной, но не встретил нонлокал или глобал, то он считает что переменная должна быть локальной. И когда уже при вызове дело доходит до принта, то мы получаем ошибку, так как переменная объявлена до ее использования(внутри функции ее нет). Ты внимательный, молодец, надо было мне проще пример привести, без принта в начале.
@donfedor0072 жыл бұрын
Спасибо! Видео отличное!
@kodalbdva40784 ай бұрын
спасибо человечище
@marinatsoy6779 Жыл бұрын
Золотой канал
@sinrew20733 жыл бұрын
спасибо
@barma13092 жыл бұрын
Супер
@alexeykolodochkin58263 жыл бұрын
global===злое зло)
@barma13092 жыл бұрын
Это не баг, это фича
@spikespiegel42822 жыл бұрын
А зачем вообще ввели этот синтаксический сахар если его вообще не стоит применять в программах? И зачем global к константам??? Мы что изменяем их? Нет. Тогда зачем их использовать? Чтобы вывести их? Так они и так выводится без приказания интерпретатору искать исключительно в глобальной области видимости. Если кто-то ответит, буду очень рад!)
@PythonRussian2 жыл бұрын
язык должен предоставлять все инструменты, а уж как ты их используешь -дело твое. Константы - не должны меняться, с глобал они напрямую не связаны, так как если мы не меняем, то и глобал не нужен. Это если верно понял вопрос
@remzilort849810 ай бұрын
В си это бы проканало. Глобал значит глобал. Везде видно