Sorry for the double-post, the first one was sent by mistake before completion.
Hi everybody, I just had a bit of a shiver for something I'm doing often in my code but that might be based on a wrong assumption on my part. Take the following code: pattern = "aPattern" compiledPatterns = [ ] compiledPatterns.append(re.compile(pattern)) if(re.compile(pattern) in compiledPatterns): print("The compiled pattern is stored.") As you can see I'm effectively assuming that every time re.compile() is called with the same input pattern it will return the exact same object rather than a second, identical, object. In interactive tests via python shell this seems to be the case but... can I rely on it - always- being the case? If the answer is no, am I right to state the in the case portrayed above the only way to be safe is to use the following code instead? for item in compiledPatterns: if(item.pattern == pattern): print("The compiled pattern is stored.") break And what about any other function or class/method? Is there a way to discriminate between methods and functions that when invoked twice with the same arguments will return the same object and those that in the same circumstances will return two identical objects? Or is it one of those implementation-specific issues? Manu -- http://mail.python.org/mailman/listinfo/python-list