On 2022-11-13, DFS <nos...@dfs.com> wrote: > On 11/13/2022 5:20 PM, Jon Ribbens wrote: >> On 2022-11-13, DFS <nos...@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. -- https://mail.python.org/mailman/listinfo/python-list