|
1 / 1 / 0
Регистрация: 17.08.2017
Сообщений: 142
|
||||||
Как избавиться от GLOBAL12.07.2019, 11:17. Показов 7088. Ответов 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 в разных каталогах Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Сочетание глобально распределённой вычислительной мощности и инновационных. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|