In code, list.clear doesn't throw error - it's just ignored

avi.e.gross at gmail.com avi.e.gross at gmail.com
Tue Nov 15 18:10:28 EST 2022


That is clear, Cameron, but on my python interpreter values evaluated on the
command line ARE saved:

>>> numb = 5
>>> 5 + numb
10
>>> numb
5
>>> _ + _ + 1
11
>>> _ * 2
22
>>>

The point is that a dummy variable of _  is assigned and re-assigned at each
step and there can be a valid, if not very useful, reason to evaluating it
and storing a result. If the darn thing is a very long name like
alpha.beta.gamma.delta.epsilon then code that uses it repeatedly in the very
next line can be much simpler by using _ repeatedly and perhaps more
efficient. Consider:

negsq = _ * -_

versus

negsq = alpha.beta.gamma.delta.epsilon * - alpha.beta.gamma.delta.epsilon

So does your linter now need to look ahead and see if "_" is used properly
in the next line? Note it can also be used on the LHS where it means
something else.

Still, I grant generally a naked evaluation is generally an error. LOL!

-----Original Message-----
From: Python-list <python-list-bounces+avi.e.gross=gmail.com at python.org> On
Behalf Of Cameron Simpson
Sent: Tuesday, November 15, 2022 4:13 AM
To: python-list at python.org
Subject: Re: In code, list.clear doesn't throw error - it's just ignored

On 15Nov2022 00:45, avi.e.gross at gmail.com <avi.e.gross at gmail.com> wrote:
>What would be the meaning of an ordering relation determining what is 
>MORE VALID?

Are you asking what criterion would rate:

     clearx = x.clear

as "more" valid than:

     x.clear

on its own?

I don't want to speak for the OP, but I'd think the OP's issue is that the
bare `x.clear` is evaluated but not stored in a variable. As a metric, we
might gather various descriptive statements we could make about these
statements. They'd perhaps include "is legal Python code", "is pretty
simple". The former line could include "saves the expression value in a
variable for later use" and the latter could not. That's a comparison test
you could use for ordering.

My own opinion is that a bare:

     x.clear

is legal and valid for all the example use cases already mentioned, but an
entirely valid target for complaint by a linter, whose task is to point out
dodgy looking stuff for review by the author.

Cheers,
Cameron Simpson <cs at cskk.id.au>
--
https://mail.python.org/mailman/listinfo/python-list



More information about the Python-list mailing list