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

Jon Ribbens jon+usenet at unequivocal.eu
Sun Nov 13 19:31:39 EST 2022


On 2022-11-13, DFS <nospam at dfs.com> wrote:
> 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?

Because it's an expression, and you're allowed to execute expressions.


More information about the Python-list mailing list