|
1 / 1 / 0
Регистрация: 17.08.2017
Сообщений: 142
|
||||||
Как избавиться от GLOBAL12.07.2019, 11:17. Показов 7137. Ответов 10
Метки нет (Все метки)
Здравствуйте, что означает :
"Чтобы избавиться от необходимости использовать глобальные переменные, для функций существует возможность возврата результата своей работы в основную ветку программы. И уже это полученное из функции значение можно присвоить глобальной переменной в глобальной области видимости." Не понимаю , как это сделать , как я понял global зло , но как его не использовать , к примеру :
0
|
||||||
| 12.07.2019, 11:17 | |
|
Ответы с готовыми решениями:
10
Подскажите, как передать атрибут или избавиться от global? Избавиться от global внутри метода класса Работа с массивами, описанными как global |
|
🅘 ❤ 🅛🅘🅝🅤🅧
17 / 46 / 13
Регистрация: 19.11.2016
Сообщений: 95
|
||||||
| 12.07.2019, 11:54 | ||||||
Сообщение было отмечено David099 как решение
Решение
Очень просто. У функций есть возвращаемые значения.
1
|
||||||
|
1 / 1 / 0
Регистрация: 17.08.2017
Сообщений: 142
|
||||||
| 12.07.2019, 12:25 [ТС] | ||||||
|
Спасибо, помогли) (не знал про return)
Добавлено через 29 минут Еще один вопрос вот код :
Traceback (most recent call last): File "C:/Users/Kresh/.PyCharmCE2019.1/config/scratches/scratch_1.py", line 16, in <module> culinder() File "C:/Users/Kresh/.PyCharmCE2019.1/config/scratches/scratch_1.py", line 13, in culinder S=S*2 UnboundLocalError: local variable 'S' referenced before assignment Не могу понять , в чем проблема .( У меня урок о global и мне интересно именно как функция действует внутри функции!)
0
|
||||||
| 12.07.2019, 12:40 | ||
1
|
||
|
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
|
||||||
| 12.07.2019, 12:42 | ||||||
1
|
||||||
|
1 / 1 / 0
Регистрация: 17.08.2017
Сообщений: 142
|
|
| 12.07.2019, 12:45 [ТС] | |
|
Спасибо, не знал, что так можно, но я дотошный и мне интересно, почему из-за S=S*2 выдает ошибку, как я понял именно там ошибка.
0
|
|
|
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
|
|
| 12.07.2019, 12:48 | |
|
потому что переменная S в выражении S = S * 2 не была определена.
0
|
|
|
1 / 1 / 0
Регистрация: 17.08.2017
Сообщений: 142
|
|
| 12.07.2019, 13:00 [ТС] | |
|
Нет, отказываться это не по нашему. Перевод ошибки я и сам знаю , но вот как её решить и почему она возникла, это я и не понимаю.(Из второго проистекает первое).
0
|
|
|
|
|||||||
| 12.07.2019, 14:33 | |||||||
Потому что ссылка на нее как на глобальную переменную сделана только здесь. Но не для обертывающей ее culinder. Для culinder S это локальная переменная, у которого нет никакого значения на момент операции S=S * 2. Поэтому для работы с переменными, которым назначено значение внутри вложенной функции используется ключевое слово nonlocal. В этом случае внешняя функция получает доступ к имени переменной внутренней функции. Добавлено через 11 минут Для более детального ознакомления с областями видимости в Python можно почитать вот этот онлайн учебник: https://www.yuripetrov.ru/edu/... .html#id27
0
|
|||||||
| 12.07.2019, 14:56 | |
|
David099, Вам все правильно сказал Garry Galler
А вот что говорит про функцию nonlocal Лутц. " Инструкция nonlocal позволяет вложенным функциям не только читать, но и изменять значения переменных в областях видимости объемлющих функций. Но в отличие от инструкции global, имена, перечисленные в инструкции nonlocal, должны фактически существовать в области видимости, вмещающей функцию, где встречается это объявление, – они могут существовать только в объемлющей области видимости и не могут быть созданы первой инструкцией присваивания во вложенной функции. На практике имена, перечисленные в инструкции nonlocal, должны быть определены в объемлющих функциях к моменту, когда поток управления достигнет инструкции nonlocal; в противном случае будет возбуждено исключение. Кроме того, что инструкция nonlocal позволяет изменять значения переменных в объемлющих функциях, она также ограничивает область поиска имен – подобно инструкции global, инструкция nonlocal вынуждает интерпретатор начинать поиск с областей видимости объемлющих функций, пропуская локальную область видимости функции. То есть, кроме всего прочего, инструкция nonlocal означает: «пропустить локальную область видимости при поиске имен». " Это, что бы лучше понимать, как работает nonlocal и ее отличие от local. Заодно поясню про "область видимости" и "пространство имен". 1. "Область видимости" для конкретного места в коде - это множество переменных, которые видны и их значения можно считывать. 2. "Пространство имен" для конкретного места в коде - это множество переменных, для которых можно не только читать их, но и записывать в них новые значения.
0
|
|
| 12.07.2019, 14:56 | |
|
Помогаю со студенческими работами здесь
11
Как убрать Global Tint у Navigation Bar Кто знает как работать с global.asа?
Как защитить global.asa уложенный в корень страницы? Как разместить два global.asa в разных каталогах Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс.
Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
|
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа.
В качестве фильтра для отбора служит предопределенное значение перечислений.
Процедура. . .
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|