parameter-passing - 参数传递 - 在python中是否有内置的方法来模拟对参数的赋值?

在python中获取方法参数名

代码如下所示:


def log_exceptions(func):


 def wrapper(*args, **kwargs):


 try:


 ret = func(*args, **kwargs)


 except Exception as e:


 print(e)


 print(args, kwargs) # also log what arguments caused the exception


 return ret


 return wrapper



将包中的args和kwargs值与内部函数中的参数名相匹配,将非常有用。

如果没有,什么是实现它的优雅方法?

时间: 作者:

如果可以签名确定,则inspect.signature(func).bind(*args, **kwargs)工作。

以下是如何使用它的示例:


import inspect



try:


 sig = inspect.signature(func)


except (TypeError, ValueError):


 print('Could not determine function signature.')


else:


 try:


 bound = sig.bind(*args, **kwargs)


 except TypeError:


 print('Could not bind arguments to function signature.')


 print('Signature:', sig)


 print('Positional arguments:', args)


 print('Keyword arguments:', kwargs)


 else:


 # You can use bound.apply_defaults() to include defaults


 print('Bound arguments (defaults not included):')


 for name, value in bound.parameters:


 print('{}: {!r}'.format(name, value))



作者:
...