<p dir="ltr"><br>
On Aug 9, 2015 8:14 PM, "David Mertz" <<a href="mailto:mertz@gnosis.cx">mertz@gnosis.cx</a>> wrote:<br>
><br>
> On Sun, Aug 9, 2015 at 11:22 AM, Eric V. Smith <<a href="mailto:eric@trueblade.com">eric@trueblade.com</a>> wrote:<br>
>><br>
>> I think it has to do with the nature of the programs that people write.<br>
>> I write software for internal use in a large company. In the last 13<br>
>> years there, I've written literally hundreds of individual programs,<br>
>> large and small. I just checked: literally 100% of my calls to<br>
>> %-formatting (older code) or str.format (in newer code) could be<br>
>> replaced with f-strings. And I think every such use would be an improvement.<br>
><br>
><br>
> I'm sure that pretty darn close to 100% of all the uses of %-formatting and str.format I've written in the last 13 years COULD be replaced by the proposed f-strings (I suppose about 16 years for me, actually).  But I think that every single such replacement would make the programs worse.  I'm not sure if it helps to mention that I *did* actually "write the book" on _Text Processing in Python_ :-).<br>
><br>
> The proposal just continues to seem far too magical to me.  In the training I now do for Continuum Analytics (I'm in charge of the training program with one other person), I specifically have a (very) little bit of the lessons where I mention something like:<br>
><br>
>   print("{foo} is {bar}".format(**locals()))<br>
><br>
> But I give that entirely as a negative example of abusing code and introducing fragility.  f-strings are really the same thing, only even more error-prone and easier to get wrong.  Relying on implicit context of the runtime state of variables that are merely in scope feels very break-y to me still.  If I had to teach f-strings in the future, I'd teach it as a Python wart.</p>
<p dir="ltr">My editor matches \bsym\b, but not locals() or "{sym}"; when I press *. #traceability<br></p>
<p dir="ltr">><br>
> That said, there *is* one small corner where I believe f-strings add something helpful to the language.  There is no really concise way to spell:<br>
><br>
>   collections.ChainMap(locals(), globals(), __builtins__.__dict__).<br>
><br>
> If we could spell that as, say `lgb()`, that would let str.format() or %-formatting pick up the full "what's in scope".  To my mind, that's the only good thing about the f-string idea.</p>
<p dir="ltr">+1. This would be the explicit way to be loose with variable scope and string interpolation, while maintaining grep-ability.</p>
<p dir="ltr">><br>
> Yours, David...<br>
><br>
> -- <br>
> Keeping medicines from the bloodstreams of the sick; food <br>
> from the bellies of the hungry; books from the hands of the <br>
> uneducated; technology from the underdeveloped; and putting <br>
> advocates of freedom in prisons.  Intellectual property is<br>
> to the 21st century what the slave trade was to the 16th.<br>
><br>
> _______________________________________________<br>
> Python-Dev mailing list<br>
> <a href="mailto:Python-Dev@python.org">Python-Dev@python.org</a><br>
> <a href="https://mail.python.org/mailman/listinfo/python-dev">https://mail.python.org/mailman/listinfo/python-dev</a><br>
> Unsubscribe: <a href="https://mail.python.org/mailman/options/python-dev/wes.turner%40gmail.com">https://mail.python.org/mailman/options/python-dev/wes.turner%40gmail.com</a><br>
><br>
</p>