@borisalekseev
extra beginner junior python backend

В чем минусы внутренних функций в методах класса?

Пришёл к такому коду, так как нигде пока что не встречал такого, интересно узнать у опытных разработчиков, пишут ли так, и если нет, то почему?
Код в примере неправильный, интересует именно сам смысл.
код
class MyClass:
    # ...
    @property
    def extract_compounds(self) -> dict:
        """Возвращает словарь для каждого соединения
        {name: {'cas': str, 'name': str, 'synonym': [str]} 'exclude': [str]}"""
        def wrapper():
            compounds_dict = {}
            for index, string in self.df.iterrows():
                if not re.fullmatch(r'\d+-\d\d-\d|', string['cas'].strip()):
                    raise ValueError(f"Неправильный cas в {index} строке.")
                compounds_dict[string['name']] = {
                    value: string[value] if value != 'synonyms' else list(
                        filter(lambda x: x != '',
                               string[value].strip(';').strip().split(';'))) for value in self.COLUMN_PATTERNS
                }
            return compounds_dict

        def as_dict():
            return wrapper()

        def as_list():
            lst = list(wrapper().values())
            return lst
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
Vindicar
@Vindicar
Вложенная функция будет создаваться заново при каждом вызове внешней (и собираться сборщиком мусора, если о ней "забыли"). Иногда это требуется, например, при создании декораторов. Иногда это незачем.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@deliro
Агрессивное программирование
Твои "функции" ничего не делают, не вызываются внутри и недоступны снаружи
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы