Litvin wrote:
At 01:54 AM 7/13/2010, kirby urner wrote:
You mean some methods actually change an object
"in place"?  Change it's state?  No copies, no
output?  No "back up"?

I've found it disconcerting that in Python 3
lst1 += lst2 changes lst1 in place, while
lst1 = lst1 + lst2 makes a copy.

Actually this behavior has been in Python since augmented assignments were introduced in version 2.0. The official wording on this (buried in the language reference) is (2.7 version, emphasis mine):

"An augmented assignment expression like x += 1 can be rewritten as x = x + 1 to achieve a similar, *but not exactly equal* effect. In the augmented version, x is only evaluated once. Also, when possible, *the actual operation is performed in-place*, meaning that rather than creating a new object and assigning that to the target, the old object is modified instead."

It *is* a bit disconcerting, but I can't at the moment think of a likely scenario where it would be a real problem.

Cheers,
Vern


Gary Litvin
www.skylit.com

--
This time for sure!
   -Bullwinkle J. Moose
-----------------------------
Vern Ceder, Director of Technology
Canterbury School, 3210 Smith Road, Ft Wayne, IN 46804
vce...@canterburyschool.org; 260-436-0746; FAX: 260-436-5137

The Quick Python Book, 2nd Ed - http://bit.ly/bRsWDW
_______________________________________________
Edu-sig mailing list
Edu-sig@python.org
http://mail.python.org/mailman/listinfo/edu-sig

Reply via email to