On Mar 12, 2020, at 10:52, Marco Sulla via Python-ideas firstname.lastname@example.org wrote:
On Thu, 12 Mar 2020 at 18:19, Chris Angelico email@example.com wrote:
No, it wouldn't - the use of the value as a return value counts as a reference. It's exactly the same as any other function that returns a brand-new value.
So the memory of that object will never free... since there's a reference that can't be deleted, until the current scope is not finished. This in practice will break `del variable`
No, because the return value only lives until (effectively) the end of the statement. A statement has no value, so the effect of an expression statement is to immediately discard whatever the value of the expression was. (In CPython this is an explicit stack pop.)
Except for the case of interactive mode, of course, where an expression statement binds the value to the _ variable.