Jigar Tanna
unread,Jun 28, 2011, 12:24:55 PM6/28/11Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to django-d...@googlegroups.com
hey,
I am new to Python and Django, was going through the concept of decorators where I came across a special case of using arguments with decorators
Below is the code for memoization where I was looking at the concept...
cache = {}
def get_key(function, *args, **kw) :
key = '%s. %s: ' % (function. __module__,function. __name__)
hash_args = [ str(arg) for arg in args]
hash_kw = [' %s: %s' % (k, hash(v) )
for k, v in kw.items() ]
return ' %s:: %s: : %s' % (key, hash_args, hash_kw)
def memoize(get_key=get_key, cache=cache) :
def _memoize( function) :
print function
def __memoize(*args, **kw) :
key = get_key(function, *args, **kw)
try:
return cache[key]
except KeyError:
cache[key] = function( *args, **kw)
return cache[key]
return __memoize
return _memoize
@memoize()
def factory(n) :
return n * n
# testcase
#print factory(3)
#
#
According to some of my collogues it is not a good practice to use decorators with arguments (i.e. @memoize() ) and instead it is good to just use @memoize. Can any of you guys explain me advantages and disadvantages of using each of them
Thanks ...