[email protected] wrote:
Using a decorator works when named arguments are not used. When named arguments are used, unexpected keyword error is reported. Is there a simple fix?
Extend def wrapper(*args) to handle *kwargs as well Emile
Code: ----- from functools import wraps def fix_args(fn): @wraps(fn) def wrapper(*args): args = (arg.replace('_', '') for arg in args) return fn(*args) return wrapper@fix_argsdef foo(a1="", a2="", b1="", b2=""): print(a1)print(a2) print(b1) print(b2) foo ('a1a1_x', 'a2a2_x', 'b1b1_x', 'b2b2_____x')foo (a1='a1a1_x', a2='a2a2_x', b1='b1b1_x', b2='b2b2_____x') Results: -------- a1a1x a2a2x b1b1x b2b2x Traceback (most recent call last): File "C:\WORK\masterDB_Update\argtest.py", line 19, in <module> foo (a1='a1a1_x', a2='a2a2_x', b1='b1b1_x', b2='b2b2_____x') TypeError: wrapper() got an unexpected keyword argument 'a1'
-- http://mail.python.org/mailman/listinfo/python-list
