
Greg Ewing <greg.ewing@canterbury.ac.nz> writes:
Steven D'Aprano wrote:
I don't think I want this behaviour:
f'{spam}' '{eggs}' => format(spam) + '{eggs}'
What do you think should happen in this case:
'{spam}' f'{eggs}'
It would seem very strange to me if the f infected strings *before* it as well as after it.
The existing behaviour of implicit concatenation doesn't give much of a guide here, unfortunately:: >>> 'foo\abar' r'lorem\tipsum' 'wibble\bwobble' 'foo\x07barlorem\\tipsumwibble\x08wobble' >>> type(b'abc' 'def' b'ghi') File "<stdin>", line 1 SyntaxError: cannot mix bytes and nonbytes literals So, the ‘b’ prefix expects to apply to all the implicitly-concatenated parts (and fails if they're not all bytes strings); the ‘r’ prefix expects to apply only to the one fragment, leaving others alone. Is the proposed ‘f’ prefix, on a fragment in implicit concatenation, meant to have behaviour analogous to the ‘r’ prefix or the ‘b’ prefix, or something else? What's the argument in favour of that choice? -- \ “If we ruin the Earth, there is no place else to go. This is | `\ not a disposable world, and we are not yet able to re-engineer | _o__) other planets.” —Carl Sagan, _Cosmos_, 1980 | Ben Finney