Функции как переменные в Python. Область видимости переменной. Реализация инкапсуляции переменной в Python.

Теги: Python, Примеры

Реализуем механизм инкапсуляции переменной value:

def cell(value = None):
    def get():
        return value
    def set(update):
        nonlocal value
        value = update
    return get, set

Теперь помещаем значение переменной с помощью set(значение). И получаем его с помощью get(). При определении функции set(update), value указана как nonlocal. Это сделано т.к. в питоне поиск имени переменной, при присваивании, ведётся сначала в локальной, затем в объемлющей функции, затем в глобальной и, наконец, во встроенной. Мы указываем интерпретатору, что он не должен искать value среди локальных переменных, т.е. он будет искать её в объемлющей функции cell().

Пример использования:

>>> get, set = cell()
>>> set(12)
>>> get()
12
>>> set(14)
>>> set(16)
>>> get()
16
>>> get()
16
>>> get()
16



04 07 2016

Теги заметки: