Python3: Доступность переменной внутри функции из вложенной функции

У меня есть код, который проходится по вложенным словарям и считает количество таких словарей которые не имеют в ключе key (список) объектов.

Сейчас я столкнулся с проблемой, что не могу нормально объявить переменную счетчик endpoints. Мой код в настоящее время:

endpoints = 0

def CountEndpoints(object_:dict, key):
    
    def search(dict_object):
        global endpoints

        if dict_object[key] == []: endpoints += 1

        for item in dict_object[key]: search(item)

    search(object_)
    return endpoints

Данный подход является не правильным, т.к. переменная endpoints глобальная, но стоит мне перенести ее в функцию CountEndpoints как функция search перестает ее видеть.

Может быть у вас есть идеи как это сделать более изящно чем есть сейчас?

В целом я получаю ожидаемый результат от функции, она будет помещена в класс, от чего я бы хотел отказаться от такого способа объявления переменной.

Ниже отставлю словарь на котором я выполнял тестирование. Ну так, на всякий случай.

{'children': [{'children': [],
               'color': '#FFFFF0',
               'description': '',
               'focus': False,
               'name': 'Ребенок'},
              {'children': [{'children': [],
                             'color': '#FFFFF0',
                             'description': '',
                             'focus': False,
                             'name': 'Ребенок'},
                            {'children': [{'children': [],
                                           'color': '#FFFFF0',
                                           'description': '',
                                           'focus': False,
                                           'name': 'Ребенок'},
                                          {'children': [],
                                           'color': '#FFFFF0',
                                           'description': '',
                                           'focus': False,
                                           'name': 'Ребенок'}],
                             'color': '#FFFFF0',
                             'description': '',
                             'focus': False,
                             'name': 'Ребенок'}],
               'color': '#FFFFF0',
               'description': '',
               'focus': False,
               'name': 'Ребенок'},
              {'children': [],
               'color': '#FFFFF0',
               'description': '',
               'focus': False,
               'name': 'Ребенок'}],
 'color': '#FFFFF0',
 'description': '',
 'focus': False,
 'name': 'Родитель'}

Ответы (1 шт):

Автор решения: John Dekker

Решил проблему так:

def CountEndpoints(object_:dict, key):

    def search(dict_object):
        ep = 0

        if not dict_object.get(key): ep += 1
        for item in dict_object[key]: ep += search(item)

        return ep

    return search(object_)

Это тоже работает и удовлетворяет моему желанию, но не отвечает на вопрос как объявить переменную в CountEndpoints, чтобы я мог с ней работать из search

→ Ссылка