Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #18925
| References | <mailman.4709.1326455724.27778.python-list@python.org> <4f101f45$0$29999$c3e8da3$5496439d@news.astraweb.com> <CAPTjJmr-069xisN6h4Cxt77vWbb+VhtMb-LRNfvyphwGz0C5GA@mail.gmail.com> <mailman.4714.1326462667.27778.python-list@python.org> <jephmt$hhp$1@reader1.panix.com> |
|---|---|
| From | Devin Jeanpierre <jeanpierreda@gmail.com> |
| Date | 2012-01-13 11:48 -0500 |
| Subject | Re: copy on write |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.4718.1326473361.27778.python-list@python.org> (permalink) |
On Fri, Jan 13, 2012 at 10:13 AM, Grant Edwards <invalid@invalid.invalid> wrote: > On 2012-01-13, Devin Jeanpierre <jeanpierreda@gmail.com> wrote: >> On Fri, Jan 13, 2012 at 7:30 AM, Chris Angelico <rosuav@gmail.com> wrote: >>> It seems there's a distinct difference between a+=b (in-place >>> addition/concatenation) and a=a+b (always rebinding), which is sorely >>> confusing to C programmers. But then, there's a lot about Python >>> that's sorely confusing to C programmers. >> >> I think this is confusing to just about everyone, when they first >> encounter it. > > That depends on what languages they've used in the past and whether > they skip reading any documentation and just assume that all languages > work the same way. > > I would agree that for the majority of new users, they previously used > only languages where an assignment operator does a "copy value", and > that 90+ percent of the time those new users they assume all languages > work that way. That isn't what I was referring to. Specifically, it confuses almost everyone the first time they encounter it that "a += b" is not the same as "a = a + b". And sure, it's documented. That's a bit of a cop-out though... it isn't in the tutorial, and even if it were, it's not as if people remember everything they read. It's not about whether you _can_ know it as much as whether it is """obvious"". There's a bit of a feeling that code should "do what it looks like" and be sort of understandable without exactly understanding everything. Maybe this idea is wrong if taken to an extreme (since it's really impossible to do completely), but the feeling of it is probably decent. It's why we use "+" for addition and "-" for subtraction, and not the other way around. You don't need to know the details of operator overloading and NotImplemented and so on to get what X + Y means for numbers, or even for lists. I feel like "a += b" is sort of implicitly understood by most programmers to be the same as "a = a + b". If you asked someone what it meant, their first answer would be "Oh, it means a = a + b"[*]. That is why it's confusing -- even to people that weren't already exposed to that idea that these are equivalent, they get infected fast. And then expectations get broken, because they're only *usually* equivalent. [*] Before posting this, I actually tried this on a Python IRC channel -- and it happened exactly as so. -- Devin
Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
copy on write Eduardo Suarez-Santana <esuarez@itccanarias.org> - 2012-01-13 11:33 +0000
Re: copy on write Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2012-01-13 12:10 +0000
Re: copy on write Chris Angelico <rosuav@gmail.com> - 2012-01-13 23:30 +1100
Re: copy on write Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2012-01-13 13:04 +0000
Re: copy on write Ethan Furman <ethan@stoneleaf.us> - 2012-01-13 10:40 -0800
Re: copy on write 88888 Dihedral <dihedral88888@googlemail.com> - 2012-01-13 14:26 -0800
Re: copy on write 88888 Dihedral <dihedral88888@googlemail.com> - 2012-01-13 14:26 -0800
Re: copy on write John O'Hagan <research@johnohagan.com> - 2012-02-02 14:18 +1100
Re: copy on write Devin Jeanpierre <jeanpierreda@gmail.com> - 2012-02-02 01:34 -0500
Re: copy on write John O'Hagan <research@johnohagan.com> - 2012-02-02 19:11 +1100
Re: copy on write Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2012-02-02 09:16 +0000
Re: copy on write Hrvoje Niksic <hniksic@xemacs.org> - 2012-02-02 11:53 +0100
Re: copy on write MRAB <python@mrabarnett.plus.com> - 2012-02-02 16:28 +0000
Re: copy on write Devin Jeanpierre <jeanpierreda@gmail.com> - 2012-02-02 12:21 -0500
Re: copy on write John O'Hagan <research@johnohagan.com> - 2012-02-03 01:17 +1100
Re: copy on write Terry Reedy <tjreedy@udel.edu> - 2012-02-02 12:25 -0500
Re: copy on write John O'Hagan <research@johnohagan.com> - 2012-02-03 14:08 +1100
Re: copy on write Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2012-02-03 05:04 +0000
Re: copy on write Chris Angelico <rosuav@gmail.com> - 2012-02-03 16:28 +1100
Re: copy on write Rick Johnson <rantingrickjohnson@gmail.com> - 2012-02-03 07:35 -0800
Re: copy on write Antoon Pardon <antoon.pardon@rece.vub.ac.be> - 2012-02-03 10:08 +0100
Re: copy on write John O'Hagan <research@johnohagan.com> - 2012-02-03 21:47 +1100
Re: copy on write Wolfram Hinderer <wolfram.hinderer@googlemail.com> - 2012-02-05 06:09 -0800
Re: copy on write "OKB (not okblacke)" <brenNOSPAMbarn@NObrenSPAMbarn.net> - 2012-02-03 16:15 +0000
Re: copy on write Thomas Rachel <nutznetz-0c1b6768-bfa9-48d5-a470-7603bd3aa915@spamschutz.glglgl.de> - 2012-02-02 11:42 +0100
Re: copy on write Devin Jeanpierre <jeanpierreda@gmail.com> - 2012-01-13 08:50 -0500
Re: copy on write Grant Edwards <invalid@invalid.invalid> - 2012-01-13 15:13 +0000
Re: copy on write Devin Jeanpierre <jeanpierreda@gmail.com> - 2012-01-13 11:48 -0500
Re: copy on write Neil Cerutti <neilc@norwich.edu> - 2012-01-13 16:54 +0000
Re: copy on write Grant Edwards <invalid@invalid.invalid> - 2012-01-13 18:15 +0000
Re: copy on write Chris Angelico <rosuav@gmail.com> - 2012-01-14 05:26 +1100
Re: copy on write Grant Edwards <invalid@invalid.invalid> - 2012-01-13 19:30 +0000
Re: copy on write Neil Cerutti <neilc@norwich.edu> - 2012-01-13 20:11 +0000
Re: copy on write Evan Driscoll <edriscoll@wisc.edu> - 2012-01-13 13:24 -0600
Re: copy on write Neil Cerutti <neilc@norwich.edu> - 2012-01-13 21:20 +0000
Re: copy on write Evan Driscoll <edriscoll@wisc.edu> - 2012-01-13 16:48 -0600
Re: copy on write 88888 Dihedral <dihedral88888@googlemail.com> - 2012-02-02 05:33 -0800
Re: copy on write Evan Driscoll <edriscoll@wisc.edu> - 2012-02-02 15:20 -0600
Re: copy on write 88888 Dihedral <dihedral88888@googlemail.com> - 2012-02-02 05:33 -0800
Re: copy on write 88888 Dihedral <dihedral88888@googlemail.com> - 2012-02-03 14:16 -0800
Re: copy on write 88888 Dihedral <dihedral88888@googlemail.com> - 2012-02-03 14:16 -0800
Re: copy on write Rick Johnson <rantingrickjohnson@gmail.com> - 2012-02-01 19:51 -0800
Re: copy on write Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2012-02-02 05:31 +0000
csiph-web