[Python-Dev] Sort out formatting differences in decimal and float (original) (raw)

Nick Coghlan ncoghlan at gmail.com
Sun Dec 6 00:28:29 CET 2009


skip at pobox.com wrote:

My apologies if I don't understand some amazing generality about format()

format("Header", '=^20s') '=======Header======='

"Format a single object {0!r}, multiple times in a single string. Year: {0.year}; Month: {0.month}; Day: {0.day}; Formatted: {0:%Y-%M-%d}".format(datetime.now()) 'Format a single object datetime.datetime(2009, 12, 6, 9, 16, 0, 875018), multiple times in a single string. Year: 2009; Month: 12; Day: 6; Formatted: 2009-16-06'

"Use keyword arguments easily: {x}, {y}, {z}".format(x=1, y=2, z=3) 'Use keyword arguments easily: 1, 2, 3'

For the things that mod formatting already allows you to do, our aim is to get format() functionality at least on par with what mod formatting supports (it should be most of the way there with the number formatting cleanups for 2.7/3.2). For the rest of the features (explicit position references, centre alignment, arbitrary fill characters, attribute and subscript references, type defined formatting control), mod formatting isn't even in the game.

Getting rid of the magic behaviour associated with the use of tuples on the right hand side is also valuable:

"%s" % (1, 2) Traceback (most recent call last): File "", line 1, in TypeError: not all arguments converted during string formatting "{}".format((1, 2)) '(1, 2)'

Developers that are already used to the limitations of mod formatting are expected to take some time to decide if they care about the extra features offered by the format method, but for new developers it should be an easy choice.

Cheers, Nick.

-- Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia



More information about the Python-Dev mailing list