Re: [Python-Dev] PEP-498: Literal String Formatting

2015年8月08日 18:21:34 -0700

> On Aug 7, 2015, at 6:39 PM, Eric V. Smith <[email protected]> wrote:
> 
> I'm open to any suggestions to improve the PEP. Thanks for your feedback.
Here's are few thoughts:
* I really like the reduction in verbosity for passing in the variable names.
* Because of my C background, I experience a little mental hiccup when using
 the f-prefix with the print() function:
 print(f"The answer is {answer}")
 wants to come out of my fingers as:
 printf("The answer is {answer}")
* It's unclear whether the string-to-expression-expansion should be arbitrarily
 limited to locals() and globals() or whether it should include __builtins__ 
and
 cell variables (closures and nested scopes). Making it behave just like
 normal expressions means that there won't be new special cases to remember
 and that many existing calls to format() can be converted automatically:
 w = 10
 def f(x):
 def g(y):
 print(f'{len.__name__}{w}{x}{y}')
* Will this proposal complicate linters, analysis tools, highlighters, etc.?
 In a way, this isn't a small language extension, it is a whole new way
 to write expressions.
* Does it complicate situations where we would otherwise pass around
 templates as first class class objects (internationalization for example)?
 def welcome(name, title):
 print(_("Good morning {title} {name}")) # expect gettext() 
substitution
* A related thought is that we normally like templates to live outside the 
 functions where they are used (separation of business logic and presentation
 logic). Use of f-strings may impact our ability to refactor (move code up or
 down a chain of nested function calls), ability to pass in templates as 
arguments,
 storing templates in globals or thread locals so that they are shareable, or
 moving them out of our scripts and into files editable by non-programmers.
* With respect to learnability, the downside is that it becomes yet another 
thing
 to have to cover in a Python class (I'm already not looking forward teaching 
 star-unpacking generalizations and the restraint to not overuse them, and
 covering await, and single dispatch, etc, etc). The upside is that templates
 themselves aren't being changed. The only incremental learning task is the
 invocation becomes automatic, saving us a little typing.
The above above are random thoughts based a first quick read. Don't take
them too seriously. Some are just shooting from the hip and are listed as food
for thought.
Raymond
 
_______________________________________________
Python-Dev mailing list
[email protected]
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to