>>> from decorator import decorator
>>> @decorator
... def identity_dec(f, *a, **k): return f(*a, **k)
...
>>> #defarg=1
>>> @identity_dec
... def f(f=1): print f
...
>>> f()
1

>>> @identity_dec
... def f(_call_): print f
... 
Traceback (most recent call last):
  ...
AssertionError: You cannot use _call_ or _func_ as argument names!

>>> @identity_dec
... def f(**_func_): print f
... 
Traceback (most recent call last):
  ...
AssertionError: You cannot use _call_ or _func_ as argument names!

>>> @identity_dec
... def f(name): print name
... 

>>> f("z")
z

The decorator module also works for exotic signatures:

>>> @identity_dec
... def f((a, (x, (y, z), w)), b):
...     print a, b, x, y, z, w

>>> f([1, [2, [3, 4], 5]], 6)
1 6 2 3 4 5
