Friday Finking: initialising values and implied tuples

2QdxY4RzWzUUiLuE at potatochowder.com 2QdxY4RzWzUUiLuE at potatochowder.com
Fri Apr 2 18:58:55 EDT 2021


On 2021年04月02日 at 19:25:07 -0300,
Marco Ippolito <maroloccio at gmail.com> wrote:
> > (a) basic linear presentation:
> > 
> > resource = "Oil"
> > time = 1
> > crude = 2
> > residue = 3
> > my_list = "long"
> > 
> > (b) using explicit tuples:
> > 
> > ( resource, time, crude, residue, my_list ) = ( "Oil", 1, 2, 3, "long" )
> > 
> > (c) linear and indented tuples:
> > 
> > (
> > resource,
> > time,
> > crude,
> > residue,
> > my_list
> > ) = (
> > "Oil",
> > 1,
> > 2,
> > 3,
> > "long"
> > )
>> Choose: (a).

I agree.
That said, I sometimes end up with something like this:
 ( resource, time, crude, residue, my_list ) = \
 ( "Oil", 1, 2, 3, "long" )
which mitigates matching up which value goes with which name. But as
soon as either tuple overflows one physical line, it's back to (a).
I did go through a phase where I tried (c); note the past tense.
> In (b) I have a problem matching identifiers to values horizontally at
> a glance and in (c) I have the same problem vertically: i.e. "is 3 the
> value for residue or crude above/to-the-left?"
>> Cognitive burden slows down and fatigues.

Yep.
> Alternatively, if the data "fits together", use a `namedtuple` with
> kwarg initialisation or structured data types like `dataclasses`.

IMO, that's usually more troule than it's worth, although
 thing = new_thing(
 resource="Oil",
 time=1,
 crude=2,
 residue=3,
 my_list="long")
is often better than a collection of positional parameters.


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /