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