Описание тега python-nonlocal

Ключевое слово нелокального Python 3 отмечает переменную как взятую из родительской области и аналогично ключевому слову global.
3 ответа

Передача переменных обратно в класс в Python

Я новичок, пожалуйста, потерпите меня. Ниже мой код: class Player(): name = "UnknownName" stren = 10 dex = 10 con = 10 intel = 10 wis = 10 cha = 10 def randAssign(self): global stren, dex, con, intel, wis, cha stat_List = [stren, dex, con, intel, wi…
12 апр '18 в 15:45
1 ответ

Как мне получить доступ к переменным внешних функций внутри замыкания (python 2.6)?

Из википедии Мне нужно получить доступ к переменным внешних функций аналогично использованию ключевого слова nonlocal из python 3.x. Есть ли способ сделать это в Python 2.6? (Не обязательно использовать нелокальное ключевое слово)
10 ответов

Нелокальное утверждение Python

При чем тут Питон nonlocal заявление сделать (в Python 3.0 и позже)? Там нет документации на официальном сайте Python и help("nonlocal") тоже не работает.
11 авг '09 в 17:36
5 ответов

В чем разница между нелокальной и глобальной переменной?

Я изучаю концепции языков программирования. Я нашел терминологию "нелокальный" в синтаксисе Python. Что означает нелокальный в питоне??
19 окт '15 в 09:44
1 ответ

Где нелокальные ()?

Как получить нелокальные переменные для текущей области? Функции vars, locals, а также globals существует, но есть ли функция, чтобы получить nonlocals? Почему нелокалы не указаны при звонке vars? Обновить Моя проблема в том, что нет способа перечис…
2 ответа

UnboundLocalError при использовании += в списке. Почему здесь необходим нелокальный режим, когда прямой вызов __iadd__ работает нормально?

Рассмотрим этот код: def main(): l = [] def func(): l += [1] func() print(l) if __name__ == '__main__': main() Это произведет: Traceback (most recent call last): File "/Users/tahsmith/Library/Preferences/PyCharm2017.1/scratches/scratch_21.py", line …
3 ответа

Рубиновый эквивалент нелокального питона

Я пытаюсь написать закрытие в Ruby. Это код, написанный на Python: def counter(): x = 0 def increment(y): nonlocal x x += y print(x) return increment Есть ли "нелокальный" эквивалент в Ruby, чтобы я мог получить доступ и внести изменения в переменну…
09 дек '12 в 01:49
1 ответ

Попытка использовать переменные вне цикла for дает SyntaxError: не найдено связывания для нелокального 'max_'

def min_diff(arry_): max_ =0 temp_ =0 for i in arry_: nonlocal max_ nonlocal temp_ if i > max_: nonlocal max_ nonlocal temp_ temp_ = max_ max_ =i return max_-temp_ Я хочу использовать max_ а также temp_ вне цикла, но я получаю ошибку SyntaxError:…
08 ноя '16 в 08:13
10 ответов

Нелокальное ключевое слово в Python 2.x

Я пытаюсь реализовать замыкание в Python 2.6, и мне нужно получить доступ к нелокальной переменной, но кажется, что это ключевое слово не доступно в Python 2.x. Как получить доступ к нелокальным переменным в замыканиях в этих версиях Python?
06 июл '10 в 22:31
0 ответов

Как получить полное пространство имен с помощью Python code.interact?

Как я могу получить доступ ко всему пространству имен, включая нелокальные имена, когда, например, выполняю code.interact в Python (v. 3.6)? Часто предлагается следующее решение или какой-либо эквивалент: code.interact(local={**globals(), **locals()…
14 авг '17 в 14:17
1 ответ

Как / каково значение переменной во вложенной функции, для которой объявлено нелокальное значение?

def make_test_dice(*outcomes): """Return a die that cycles deterministically through OUTCOMES. >>> dice = make_test_dice(1, 2, 3) >>> dice() 1 >>> dice() 2 >>> dice() 3 >>> dice() 1 """ assert len(outcome…
09 апр '18 в 14:03
0 ответов

Переменные состояния в Python: когда выбирать классы, нелокальные переменные или атрибуты функций

Существует (как минимум) три различных способа отслеживания информации о состоянии для функций в python (примеры, представленные без какого-либо значимого способа использования информации о состоянии, очевидно): ООП Классы: class foo: def __init__(s…
2 ответа

Синтаксическая ошибка нелокального оператора в Python

Я хотел бы протестировать пример использования нелокального оператора, указанного в ответе на этот вопрос: def outer(): x = 1 def inner(): nonlocal x x = 2 print("inner:", x) inner() print("outer:", x) но когда я пытаюсь загрузить этот код, я всегда…
10 янв '13 в 18:00
2 ответа

Понимание нелокальности в Python 3

Я пытаюсь понять область видимости переменных Python 3 и nonlocal, Рассмотрим следующую функцию (это всего лишь пример): def build_property(something): def deco(func): def getter(self): return getattr(self, something) def setter(self, value): setatt…
11 янв '14 в 14:06
1 ответ

Python: изменить локальную переменную метода внутри внутреннего метода

Я пишу тестовый метод под названием, скажем, test_foo (используя pytest). Я проверяю поведение функции, foo, который принимает в качестве аргумента другую функцию, get, foo звонки get итеративно, условно на возвращаемое значение getНапример: def foo…
12 фев '16 в 17:09
2 ответа

Python, как я могу изменить значение переменной в родительской области?

Например: оператор assginment объявит новую локальную переменную. foo = 'global' def func1(): foo = 'func1' def func2(): foo = 'local variable in func2' использовать глобальное объявление будет использовать foo в глобальном: def func2(): global foo …
21 мар '11 в 02:57
3 ответа

Переменная изменения вложенной функции во внешней функции не работает

def some_func(a): def access_a(): print(a) access_a() выводит значение a, Однако, если я хочу изменить a во вложенной функции вот так: def some_func(a): def change_a(): a += 1 print(a) change_a() это поднимает UnboundLocalError исключение. я знаю a …
22 дек '16 в 08:32
2 ответа

Python: как разрешить "внутренней функции" изменять нелокальные переменные в нескольких "внешних функциях"

Предположим, у меня есть функция, которая имеет большой участок кода, повторяемый в разных местах внутри функции, я могу сделать следующее: def foo(): def bar(): # do some stuff bar() # do some other stuff bar() Я могу "читать" переменные, которые н…
12 апр '18 в 18:18
1 ответ

Почему эта программа на Python имеет следующий вывод?

def makeInc (x, step): def next(): nonlocal x, step x = x + step return x return next x = makeInc (0, 1) y = makeInc (0, 10) x1=x() x2=x() y1=y() y2=y() print( x1, x2, y1, y2) Вывод 1 2 10 20. Я не уверен, почему он дает эти выводы, кто-нибудь может…
20 дек '13 в 06:16
2 ответа

SyntaxError нелокальный питон в определении метода

Я набираю в интерактивном режиме следующий код: class A: a=42 def foo(): nonlocal a но у меня есть SyntaxError: no binding for nonlocal 'a' found, Но я ожидаю, что результат разрешения nonlocal a будет 42, потому что ближайшая окружающая область для…
28 фев '14 в 13:35