[Python-3000] More wishful thinking
Talin
talin at acm.org
Sun Apr 16 07:49:37 CEST 2006
Talin <talin <at> acm.org> writes:
> 2) A suggestion which I've seen others bring up before is the use of
> the * operator for tuple packing / unpacking operations, i.e.:
>
> a, *b = (1, 2, 3)
I wanted to add another case that I run across in my code a lot.
I often times want to split off a single leading word or token
from a string, but I don't know in advance whether or not the
split will actually succeed.
For example, suppose you want to render the first word of
a paragraph in a different style:
first, rest = paragraph.split( ' ', 1 )
Unfortunately, if the paragraph only contains a single word,
this blows up. So what you end up having to do is:
parts = paragraph.split( ' ', 1 )
if len( parts ) > 1:
first, rest = parts
else:
first = parts[ 0 ]
rest = ""
My objection here is that the intent of the code is cluttered
up by the error-handling logic.
If I could do an argument-style unpack, however, I could instead
write:
first, *rest = paragraph.split( ' ', 1 )
It does mean that 'rest' is wrapped in a tuple, but that's not a
terrible hardship. If there's no second word, then 'rest' is an
empty tuple, which is easy to test with "if rest" and such.
-- Talin
More information about the Python-3000
mailing list