Почему питон не видит переменную?
Питон не видит переменную в функции
Здравствуйте! Не так давно начать разбирать в thinter. Пишу работу, где программа должна выводить 2.
Почему линкер не видит статическую переменную?
почему линковщик не видит статическую переменную: файл aaa.h class aaa < protected.
Не могу понять почему не видит компилятор переменную
Здравствуйте! using System; using System.Collections.Generic; using System.Linq; using.
![]()
5416 / 3840 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
Сообщение от stympel 
Давно прогаю на питоне
Судя по коду — от силы неделю:
1) list это встроенная функция, поэтому знающий питонист никогда так не назовет переменную
2)
Сообщение от stympel 
питон не видит переменную SOME_VAR
потому что в коде она «замаскирована» другой (локальной) переменной с тем же именем.
Регистрация: 17.05.2017
Сообщений: 97
Сори, я уже часов 5 работаю и голова не варит.
Как сделать, чтобы эта переменная была видна?
P.S. большое спасибо, за авторитетную оценку меня))00))0)
Просто Лис
![]()
5321 / 3335 / 1021
Регистрация: 17.05.2012
Сообщений: 9,768
Записей в блоге: 9
Сообщение от stympel 
Как сделать, чтобы эта переменная была видна?
1 2 3
def function(self): global SOME_VAR # …
Но не надо так делать: глобальные переменные — зло.
![]()
4615 / 2036 / 359
Регистрация: 17.03.2012
Сообщений: 10,103
Записей в блоге: 6
Присоединяюсь, глобальные переменные — зло лютое.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Питон 3 на Cygwin не видит модуль
Здравствуйте. Столкнулся с проблемой при переносе проекта Python с Linux машины на Windows на.
Питон не видит модуль PIL
Модуль ставил через pip, в консоли он импортирует, в коде нет Питон 3.9.7 MS Visual Studio Code.
Питон не видит модуль после установки его через pip install
Здравствуйте, возникла необходимость установить udemy-dl. Команда pip install udemi-dl выполнилась.
Хром 56.0.2924.87 не видит табл.стилей а Лиса 4.0 Видит, почему?
Хром 56.0.2924.87 не видит табл.стилей а Лиса 4.0 Видит, почему? И как сделать, чтобы Хром видел.
почему Питон не переваривает кирилицу?
я новичок. столкнулся с принеприятнейшим моментом — комментарии в коде нужно отфильтровывать иначе.
Почему из функции недоступна глобальная переменная?
Я предполагал, что когда интерпретатор дойдёт до строки print(s), он поймёт, что в области видимости функции foo такой переменной не существует. Следовательно начнёт искать её во внешней области видимости, но там она есть. Однако в результате в консоль выводится следующее сообщение об ошибке:
Traceback (most recent call last): File "index.py", line 7, in foo() File "index.py", line 4, in foo print(s) UnboundLocalError: local variable 's' referenced before assignment
Проблема исчезает, если закомментировать строку
s = 'Reset global variable'
но мне всё равно не понятен механизм
Отслеживать
47.8k 17 17 золотых знаков 56 56 серебряных знаков 100 100 бронзовых знаков
задан 16 мая 2019 в 6:18
rettoryh13 rettoryh13
181 1 1 серебряный знак 7 7 бронзовых знаков
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Марк Лутц — «Изучаем Python», глава 20, страница 596
Как известно, имена, которым выполняется присваивание внутри функции, по умолчанию рассматриваются как локальные – они располагаются в области видимости функции и существуют только во время работы функции. Но я еще не говорил, что локальные переменные определяются статически, во время компиляции программного кода в инструкции def, а не в соответствии с операциями присваивания, производимыми во время выполнения. Эта особенность становится причиной появления самых причудливых сообщений в группе новостей, получаемых от начинающих программистов. Обычно, если внутри функции имени не присваивается какое-либо значение, поиск его будет производиться в области видимости объемлющего модуля. Но посмотрите, что произойдет, если добавить инструкцию присваивания переменной X после ее использования.
X = 99 >>> def selector(): . print(X) # Переменная еще не существует! . X = 88 # X классифицируется как локальная переменная . # То же самое происходит при “import X”, “def X”. >>> selector() Traceback (most recent call last): . текст сообщения об ошибке опущен. UnboundLocalError: local variable ‘X’ referenced before assignment
Было получено сообщение о том, что переменная не определена, но причина его появления не очевидна. Этот программный код компилируется интерпретатором во время ввода в интерактивной оболочке или во время импорта модуля. Вовремя компиляции Python обнаруживает операцию присваивания переменной X и делает вывод, что X – это локальное имя везде в теле функции. Но во время выполнения функции, из-за того, что к моменту вызова инструкции print операция присваивания еще не производилась, интерпретатор сообщает о том, что имя не определено. Согласно этому правилу использования имен, он говорит, что обращение к локальной переменной X произведено до того, как ей было присвоено значение. Фактически любая операция присваивания внутри функции создает локальное имя. Операция импортирования, =, вложенные инструкции def, вложенные определения классов и так далее – все трактуются именно таким образом. Проблема возникает из-за того, что операция присваивания делает имена локальными для всей функции, а не только для той ее части, которая следует за инструкцией присваивания.
Читать учебники — полезно.
Python почему не видит глобальную переменную?
Сам код большой так что кратко.
Код запускается с функции, сразу прописаны глобальные переменные «global XX» вот так, потом сразу даю «XX» значение 0,
после идут функции, которые используются в дальнейшем коде, в них есть XX, но при их вызове питон говорит что у него нету значения XX, почему ?
Просили код? вот пример, почему «a» не видит как переменную ?
def aa(): global a a=0 def bb(): if a==0: a=5 bb()
в этом случае скажет что у «a» нету значения
- Вопрос задан более трёх лет назад
- 1933 просмотра
2 комментария
Простой 2 комментария
Почему функция не видит глобальных переменных?
Вот код: var a = document.getElementById(«jmk»); var b = 0 function movhtml(a,b) < if (b == 1) < var a = document.getElementById("jmk"); a.innerHTML = "→"; return b - 1;>else < var a = document.getElementById("jmk"); a.innerHTML = "←"; return b + 1;>>; Если поставить alert(b) в начале функции, то при включении выйдет окошко с надписью что значение не определено. По задумке return должен менять глобальную переменную, и при следующем щелчке значение d должно быть 1 Но оно не работает. Как это порешать то?