[Python-3000] Proposed changes to PEP3101 advanced string formatting -- please discuss and vote! (original) (raw)

Talin talin at acm.org
Wed Mar 14 07:08:27 CET 2007


Patrick Maupin wrote:

Ian Bicking actually suggested 'somestring'.eval() for this functionality. I like that a lot, in the sense that it gives the same sense of danger as eval('somestring'), but at the same time, I dislike it intensely because eval('somestring') and 'somestring'.eval() appear so similar but would give such drastically different results.

Then I would call that 'somestring'.expand(), or perhaps 'substitute' or 'interpolate' - implying that you are doing an expansion of the named fields within the current scope.

If the default usage of locals() / globals() is really that objectionable, we can certainly take it out. In that case, I would suggest that one possible thing to do is:

1) Make calling format() with no variables raise an exception; and 2) Monitor the usage and see how often people do 'somestring'.format(namespace=locals()) or 'somestring'.format(namespace=(locals(), globals)) If the number of times this extra boilerplate appears in code seems excessive, then we could either add another method to do the automatic locals() and globals(), or (since we would know there are no uses of format() with no variables in the code) reenable the functionality.



More information about the Python-3000 mailing list