No macros in Python
Michael Hudson
mwh at python.net
Tue Dec 17 09:04:10 EST 2002
More information about the Python-list mailing list
Tue Dec 17 09:04:10 EST 2002
- Previous message (by thread): No macros in Python
- Next message (by thread): No macros in Python
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
jepler at unpythonic.net writes: > I'd rather just write 'with lock: suite'. Right. Here's a proposal: with <exp>: <suite> is equivalent to _x = <exp> _x.__enter__() try: <suite> finally: _x.__exit__() Method names can be argued about. I think they should be __special__ names because they are called by the interpreter, not the programmer[*]. threading.RLock, for example, gets: __enter__ = acquire __exit__ = release added to it's definition. Everyone in the world writes something like: class output_to(object): def __init__(self, f): self.file = f def __enter__(self): self.saved = sys.stdout sys.stdout = self.file def __exit__(self): sys.stdout = self.saved so you can do with output_to(open("/tmp/log", "w")): print "hello!" 'with' would have to become a keyword, so that implies a __future__ statement, even though it's kind of hard to see how you would use it as a name. I don't think this would be hard to implement. I'll do a prototype and a proper PEP after 2.3 is out. Cheers, M. [*] this is a nice just-so story for why .next() is not called .__next__(). -- 7. It is easier to write an incorrect program than understand a correct one. -- Alan Perlis, http://www.cs.yale.edu/homes/perlis-alan/quotes.html
- Previous message (by thread): No macros in Python
- Next message (by thread): No macros in Python
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list