On Tue, May 31, 2011 at 4:13 PM, Wolfgang Rohdewald
<[email protected]> 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
--
http://mail.python.org/mailman/listinfo/python-list