On Wed, Apr 3, 2019 at 3:55 AM Alexey Muranov <alexey.mura...@gmail.com> wrote: > I clarified what i meant by an assignment, and i believe it to be a > usual meaning. > > 1. `def` is not an assignment, there is no left-hand side or > right-hand side. I was talking about the normal assignment by which > anyone can bind any value to any variable.
Actually, a 'def' statement DOES perform assignment. It does a bit more than that, but it definitely is assignment. You can easily check the CPython disassembly: >>> import dis >>> def f(): ... def g(x): return x * 3 + 1 ... >>> dis.dis(f) 2 0 LOAD_CONST 1 (<code object g at 0x7fa529daf540, file "<stdin>", line 2>) 2 LOAD_CONST 2 ('f.<locals>.g') 4 MAKE_FUNCTION 0 6 STORE_FAST 0 (g) 8 LOAD_CONST 0 (None) 10 RETURN_VALUE [disassembly of g() omitted as it's irrelevant] At run time, the statement "def g(x): ..." means "grab this code object and this name, make a function, *and assign it to the name g*". Your other points, I agree on. ChrisA -- https://mail.python.org/mailman/listinfo/python-list