
On Jun 26, 2004, at 10:27 AM, Phillip J. Eby wrote:
Actually, he very well might, and a number of other people definitely do. One use case repeatedly mentioned on Python-Dev has been to register functions or classes with frameworks, therefore definitely involving a literal side-effect (i.e. modification to an unrelated data structure).
IMHO, the fact that this results in a modification to a data structure in framework code is an implementation detail; conceptually it can be argued that this is *still not a side-effect* --- you are in essence *saying something about* the function or object in question, not expressing something algorithmic. My fear is that we end up seeing stuff like this: [SomeDecorator(someFreeVariable=Assignment)] def foo(...): x = someFreeVariable ... My biggest concern in all this is that we end up muddying up readability and clarity by trying to improve it.
(I wonder if I should submit a patch for PEP 318 to add this to the motivation section, because it seems a lot of people keep repeating this "no side-effects metadata" misconception.)
I think that before we "clarify" the PEP that the intent here *is* to allow side-effects we should get some clarity on what a side-effect *is.* Clearly there's enough lack of consensus about this; perhaps we need to see more examples of how various folks would use it. jb