scope of function parameters (take two)
Daniel Kluev
dan.kluev at gmail.com
Tue May 31 01:36:33 EDT 2011
On Tue, May 31, 2011 at 4:13 PM, Wolfgang Rohdewald
<wolfgang at rohdewald.de> wrote:
> what you really seem to want is that a function by default
> cannot have any side effects (you have a side effect if a
> function changes things outside of its local scope). But
> that would be a very different language than python
This can be done in Python (to some degree), like this
@copy_args
def somefunc(a, b, c):
...
where copy_args would explicitly call deepcopy() on all args passed to
the function.
Or, to save some performance, wrap them in some CopyOnEdit proxy
(although this is tricky, as getattr/getitem can modify object too if
class overrides them).
Obviously it would not save you from functions which use
global/globals() or some other ways to change state outside their
scope.
--
With best regards,
Daniel Kluev
More information about the Python-list
mailing list