def get_arg_default(f, position):
try:
# Python >= 3.3
sig = inspect.signature(f)
arg = list(sig.parameters.values())[position]
arg_def = arg.default
return arg_def if arg_def != inspect.Parameter.empty else None
except AttributeError:
try:
spec = inspect.getfullargspec(f)
except AttributeError:
spec = inspect.getargspec(f)
args_len = len(spec.args)
if spec.defaults and abs(position - args_len) <= len(spec.defaults):
return spec.defaults[position - args_len]
else:
return None
评论列表
文章目录