Barry Warsaw wrote: > Raymond and I had a chance to talk about PEP 292 on bug day, and we've > exchanged a few private emails and implementations. I think we've > finally knocked everything into shape for inclusion in Python 2.4's next > alpha. > > In the sandbox you will find the updated implementation, along with > updated tests and documentation (libstring.tex). > > The updated PEP is at: > > http://www.python.org/peps/pep-0292.html If I understood things correctly, this proposal will not allow the evaluation of any kind of expression, including attributes. With the existing interpolation system, the following happens: In [2]: print 'sys.platform is: %(sys.platform)s' % locals() --------------------------------------------------------------------------- KeyError Traceback (most recent call last) ? KeyError: sys.platform I understand why this is the case, but it has always struck me as an unpleasant aspect of string interpolation, since it often forces me to create throw-away locals when I want to print data stored as attributes of an object. It is easy to end up with code that looks like: _x,_y,_z = self.x, self.y,self.z # throwaways for printing print """\ The coordinates are: x = %(_x)s y = %(_y)s z = %(_z)s """ % locals() Simply because trying to do %(self.x)s won't work. This just feels ugly, IMHO. I wonder if it would be possible to at least allow this kind of expansion (without going to the full-blown possibilities of PEP 215) in pep-292. I know there are tricks to produce this kind of evaluation already (which I sometimes use). But since pep-292 is trying to introduce a standard interpolation mechanism which is easy to use for the common cases, and object attributes are such a pervasive part of the language, I hope this addition can be considered. Best, f ps. Forgive me if the above is already allowed; if that is the case, it might be worth pointing it out in an example in the PEP.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4