Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #93108

Could you explain this rebinding (or some other action) on "nums = nums"?

Newsgroups comp.lang.python
Date 2015-06-24 16:52 -0700
Message-ID <94c2e42e-1e5f-40cf-9259-26035e277bf3@googlegroups.com> (permalink)
Subject Could you explain this rebinding (or some other action) on "nums = nums"?
From fl <rxjwg98@gmail.com>

Show all headers | View raw


Hi,

I read a blog written by Ned and find it is very interesting, but I am still
unclear it in some parts. In the following example, I am almost lost at the
last line: 

nums = num


Could anyone explain it in a more detail to me?

Thanks,





.......................
The reason is that list implements __iadd__ like this (except in C, not Python):

class List:
    def __iadd__(self, other):
        self.extend(other)
        return self
When you execute "nums += more", you're getting the same effect as:

nums = nums.__iadd__(more)
which, because of the implementation of __iadd__, acts like this:

nums.extend(more)
nums = nums
So there is a rebinding operation here, but first, there's a mutating operation, and the rebinding operation is a no-op.

Back to comp.lang.python | Previous | NextNext in thread | Find similar | Unroll thread


Thread

Could you explain this rebinding (or some other action) on "nums = nums"? fl <rxjwg98@gmail.com> - 2015-06-24 16:52 -0700
  Re: Could you explain this rebinding (or some other action) on "nums = nums"? Chris Angelico <rosuav@gmail.com> - 2015-06-25 10:16 +1000

csiph-web