按 name/identifier 访问默认函数参数值

Access default function argument values by name/identifier

考虑以下简化示例:

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

f('Hello', 'two')

虽然 f.__defaults__ 返回的元组可以按相应顺序访问所有默认参数值(即 按位置 ),但我想知道是否有办法从函数中通过参数(此处:'offset')的 name/identifier 访问它们 ...

您可以使用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