"PyPK" <[EMAIL PROTECTED]> writes: > now I want execute() function to get executed only once. That is the > first time it is accessed. > so taht when funcc2 access the execute fn it should have same values as > when it is called from func1.
There's nothing built into Python for that. You have to program the function to remember whether it's already been called. It sounds like you're trying to avoid performing some side effect more than once. Anyway, there's multiple ways you can do it. The conceptually simplest is probably just use an attribute on the function: tmp = 0 # you want to modify this as a side effect def execute(): global tmp if not execute.already_called: tmp += 1 execute.already_called = True return tmp execute.already_called = False Other ways include using a class instance, using an iterator, etc. Generally too, you might find it cleaner to avoid having side effects like that. Instead, put tmp itself inside a class instance: class Memo: def __init__(self): self.value = 0 # any side effects operate on this self.already_called = False def __call__(self): if not self.already_called: self.already_called = True self.value += 1 return self.value execute = Memo() Now you don't have global state cluttering things up, you can make multiple instances easily, etc. -- http://mail.python.org/mailman/listinfo/python-list