semantics of the |= operator
Hi All, what's the exact semantics of the |= operator in python? It seems that a |= d is not always equivalent to a = a | d For example let's consider the following code: def foo(s): s = s | set([10]) def bar(s): s |= set([10]) s = set([1,2]) foo(s) print s # prints set([1, 2]) bar(s) print s # prints set([1, 2, 10]) So it appears that inside bar function the |= operator modifies the value of s in place rather than creates a new value. I'm using Python 2.5 Thanks everybody, Vitali -- http://mail.python.org/mailman/listinfo/python-list
Re: semantics of the |= operator
thanks all, >Yes. That's the exact purpose of the in-place operators when they deal with >mutable objects. What else did you expect? well, frankly I expected a |= b to mean exactly the same as a = a | b regardless of the object type. > The manual explicitly specifies that mutable objects may implement the > operation part of operation-assignments by updating in place -- so that > the object assigned is a mutated version of the original rather than a > new object. could you please refer me a link where this is specified? I couldn't find it in python documentation > This has nothing to do with being inside a function. yes, I know. maybe my example is a bit too verbose. could avoid using functions. But you got my main point. I found it somewhat counter-intuitive that operation-assignments can modify value in place. Regards, Vitali -- http://mail.python.org/mailman/listinfo/python-list
Re: semantics of the |= operator
thanks everybody. -- http://mail.python.org/mailman/listinfo/python-list
