Python3: невозможно изменить переменные словаря locals () внутри функции - PullRequest
1 голос
/ 11 апреля 2019

Похоже, когда я передаю переменную в функцию, я могу изменить ее в dict globals (), но не в dict localals ().Для этого есть причина?Поэтому этот код

def test(a, dim):
    locals()['dim'] = a
    print(locals()['dim'])
    globals()['dim'] = a
    print(globals()['dim'])

dim = 1
test(4,dim)

дает мне

4
1

Мне было бы очень любопытно услышать, почему это так и знаете ли вы способ изменения переменных localals () внутрифункция.

1 Ответ

1 голос
/ 11 апреля 2019

Согласно документации, словарь locals () нельзя использовать для изменения переменных.

https://docs.python.org/3/library/functions.html#locals

Содержание этого словаря не должно изменяться; изменения могут не влияет на значения локальных и свободных переменных, используемых переводчик.

Вы можете редактировать словарь globals (), но это считается нестандартным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...