It should do the import for you. As was proposed: ``` print(f"My dict: {d!p}") ```
should be equivalent to ``` import pprint print(f"My dict: {pprint.pformat(d)}") ``` The import should happen in the same scope. Modifying the global namespace could be confusing. A quick test shows that adding `import pprint` to `pprint.pformat({1:2})` slows things down by about 4% on my machine, which I don't think is worth being concerned about. If the dict has 100 elements, the difference becomes too small to measure. My first instinct is that monkeypatching the pprint module should affect !p, but I see that monkeypatching builtins.repr doesn't affect !r, so I'm not sure. On Tue, Jul 21, 2020 at 8:04 PM Rob Cliffe via Python-ideas < python-ideas@python.org> wrote: > That seems like a nice idea, but what would happen if pprint had not > been imported? NameError? > Rob Cliffe > > On 16/07/2020 05:34, Charles Machalow wrote: > > Right now in str.format(), we have !s, !r, and !a to allow us to call > str(), repr(), and ascii() respectively on the given expression. > > > > I'm proposing that we add a !p conversion to have pprint.pformat() be > called to convert the given expression to a 'pretty' string. > > > > Calling > > ``` > > print(f"My dict: {d!p}") > > ``` > > > > is a lot more concise than: > > > > ``` > > import pprint > > print(f"My dict: {pprint.pformat(d)}") > > ``` > > > > We may even be able to have a static attribute stored to change the > various default kwargs of pprint.pformat(). >
_______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/UUZLIVS67PU552IMRNP6JBNC5LHACVQ2/ Code of Conduct: http://python.org/psf/codeofconduct/