Доступ к значениям аргументов функции по умолчанию по имени / идентификатору - PullRequest
1 голос
/ 08 апреля 2020

Рассмотрим следующий упрощенный пример:

def f(string, offset=0):
    print(string[offset:] if isinstance(offset, int) else string[f.__defaults__[0]:])

f('Hello', 'two')

Хотя кортеж, возвращаемый f.__defaults__, дает доступ ко всем значениям аргументов по умолчанию в соответствующем порядке (т. Е. по позиции ), I Интересно, есть ли способ получить к ним доступ по имени / идентификатору аргумента (здесь: 'offset') из функции ...

1 Ответ

0 голосов
/ 08 апреля 2020

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

import inspect

def f(string, offset=0):
    print(string[offset:] if isinstance(offset, int) else string[f_params['offset'].default:])

f_params = inspect.signature(f).parameters
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...