Сохранение документации функции при декорировании
У декораторов существует ряд проблем, одна из которых заключается в том, что, после оборачивания функции в декоратор, на выходе мы не можем получить информацию атрибутов
Вместо значений данных атрибутов исходной функции мы будем получать значения функции обертки.
Для решения этой проблемы можно воспользоваться декоратором
#декораторы #wraps
У декораторов существует ряд проблем, одна из которых заключается в том, что, после оборачивания функции в декоратор, на выходе мы не можем получить информацию атрибутов
__name__ и __doc__, нужные для документации функции. Вместо значений данных атрибутов исходной функции мы будем получать значения функции обертки.
Для решения этой проблемы можно воспользоваться декоратором
functools.wraps, применяя его к обертке нашего декоратора. В результате имя и сигнатура функции, передаваемой в декоратор, будут копироваться в обертку.#декораторы #wraps
Определение литеральных типов
Когда нам может понадобится определить из полученной строки литеральный тип (строки, числа, списки, кортежи, словари, логические значения и None), мы можем воспользоваться функцией
Данная функция поможет безопасно определить литеральный тип, а в случае если был передан не литерал, то выбросит исключение. Это можно использовать для оценки выражений из внешних источников при парсинге файлов, либо пользовательского ввода.
#ast #literal_eval
Когда нам может понадобится определить из полученной строки литеральный тип (строки, числа, списки, кортежи, словари, логические значения и None), мы можем воспользоваться функцией
literal_eval() из модуля ast.Данная функция поможет безопасно определить литеральный тип, а в случае если был передан не литерал, то выбросит исключение. Это можно использовать для оценки выражений из внешних источников при парсинге файлов, либо пользовательского ввода.
#ast #literal_eval