Martin v. Löwis wrote: >>I know *I* at least don't like code that mixes up access and >>modification. Maybe not everyone does (or maybe not everyone thinks of >>getitem as "access", but that's unlikely). I will assert that it is >>Pythonic to keep access and modification separate, which is why methods >>and attributes are different things, and why assignment is not an >>expression, and why functions with side effects typically return None, >>or have names that are very explicit about the side effect, with names >>containing command verbs like "update" or "set". All of these >>distinguish access from modification. > > > Do you never write > > d[some_key].append(some_value) > > This is modification and access, all in a single statement, and all > without assignment operator. (d[some_key]) is access. (...).append(some_value) is modification. Expressions are compound; of course you can mix both access and modification in a single expression. d[some_key] is access that returns something, and .append(some_value) modifies that something, it doesn't modify d. > I don't see the setting of the default value as a modification. > The default value has been there, all the time. It only is incarnated > lazily. It is lazily incarnated for multidict, because there is no *noticeable* side effect -- if there is any internal side effects that is an implementation detail. However for default_factory=list, the result of .keys(), .has_key(), and .items() changes when you do d[some_key]. -- Ian Bicking / ianb at colorstudy.com / http://blog.ianbicking.org
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4