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))



原作者:
...