Как мне получить доступ к переменным внешних функций внутри замыкания (python 2.6)? - PullRequest
4 голосов
/ 11 сентября 2010

С Википедия

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

1 Ответ

5 голосов
/ 11 сентября 2010

Я всегда использую вспомогательные объекты в этом случае:

def outerFunction():
    class Helper:
        val = None
    helper = Helper()

    def innerFunction():
        helper.val = "some value"

Это также полезно, когда вы запускаете новый поток, который должен записать значение во внешнюю область функции.В этом случае helper будет передано в качестве аргумента innerFunction (функция потока).

...