On 23/10/2019 16:16, Steven D'Aprano wrote:
On Wed, Oct 23, 2019 at 03:16:51PM +0100, Rhodri James wrote:

I'm seriously not getting the issue people have with

colours1 = ["red", "green", "blue"]

which has the advantage of saying what it means.

As opposed to the alternatives, which say something different from what
they mean?

Well, yes.

["red", "green", "blue"]

says that this is a list of strings.  End of.

"red green blue".split()

says that this is a string that is now -- ta dah! -- a list of strings. Nothing up my sleeves. No, don't clap, just throw money.

It's only a little bit of extra cognitive load in this case, but then you start meeting corner cases like wanting spaces in your strings and it stops being nearly so little.

The proposed:

%w[red green blue]

says that this is something, good luck figuring out what. If you know, it's only a little more cognitive load, but again gets messier as you get into the corner cases, as you've been demonstrating. If you don't know, looking it up is not going to be easy.

Wherever possible, we should let the interpreter or compiler do the
repetitive stuff.

I prefer to let my editor do the work, actually. When I have had to do long lists of strings (or anything, really) like this, I mostly type it in as:

NOTIONAL_CONSTANT = [
red
blue
greeeeeen
burnt umber
burnt cake
really long name with lots of     spaces     in it
and so on
and so on
]

and then write a quick editor macro to add the quotes and comma and tab into a more beautiful (and syntactically correct) form. Not much more trouble than typing it all in as an escaped string, and no extra runtime loading either. The result is immediately readable source, which I consider a major win.

--
Rhodri James *-* Kynesim Ltd
_______________________________________________
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/2UJPTFEJLLUPLC552BOH7PBXQ7FXNVMY/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to