from functools import wraps
def save_id(func):
@wraps(func)
def wrapper(*args, **kwargs):
return func(me=func, *args, **kwargs)
return wrapper
@save_id
def my_own_id(me): # me is passed implicitly by save_id
return id(me)
alias = my_own_id
print alias()
my_own_id = 'foo'
print alias()
ZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCmRlZiBzYXZlX2lkKGZ1bmMpOgogICAgQHdyYXBzKGZ1bmMpCiAgICBkZWYgd3JhcHBlcigqYXJncywgKiprd2FyZ3MpOgogICAgICAgIHJldHVybiBmdW5jKG1lPWZ1bmMsICphcmdzLCAqKmt3YXJncykKICAgIHJldHVybiB3cmFwcGVyCgoKQHNhdmVfaWQKZGVmIG15X293bl9pZChtZSk6ICMgbWUgaXMgcGFzc2VkIGltcGxpY2l0bHkgYnkgc2F2ZV9pZAogICAgcmV0dXJuIGlkKG1lKQoKYWxpYXMgPSBteV9vd25faWQKcHJpbnQgYWxpYXMoKQpteV9vd25faWQgPSAnZm9vJwpwcmludCBhbGlhcygp