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

DFS nospam at dfs.com
Sun Nov 13 18:12:33 EST 2022


On 11/13/2022 5:20 PM, Jon Ribbens wrote:
> On 2022-11-13, DFS <nospam at dfs.com> wrote:
>> In code, list.clear is just ignored.
>> At the terminal, list.clear shows
>> <built-in method clear of list object at 0x000001C9CFEC4240>
>>
>>
>> in code:
>> x = [1,2,3]
>> x.clear
>> print(len(x))
>> 3
>>
>> at terminal:
>> x = [1,2,3]
>> x.clear
>> <built-in method clear of list object at 0x000001C9CFEC4240>
>> print(len(x))
>> 3
>>
>>
>> Caused me an hour of frustration before I noticed list.clear() was what
>> I needed.
>>
>> x = [1,2,3]
>> x.clear()
>> print(len(x))
>> 0
> 
> If you want to catch this sort of mistake automatically then you need
> a linter such as pylint:
> 
>    $ cat test.py
>    """Create an array and print its length"""
> 
>    array = [1, 2, 3]
>    array.clear
>    print(len(array))
>    $ pylint -s n test.py
>    ************* Module test
>    test.py:4:0: W0104: Statement seems to have no effect (pointless-statement)


Thanks, I should use linters more often.

But why is it allowed in the first place?

I stared at list.clear and surrounding code a dozen times and said 
"Looks right!  Why isn't it clearing the list?!?!"

2 parens later and I'm golden!








More information about the Python-list mailing list