Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #30675 > unrolled thread

Re: local variable 'a' referenced b

Started byDemian Brecht <demianbrecht@gmail.com>
First post2012-10-02 22:54 -0700
Last post2012-10-02 22:54 -0700
Articles 1 — 1 participant

Back to article view | Back to comp.lang.python

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: local variable 'a' referenced b Demian Brecht <demianbrecht@gmail.com> - 2012-10-02 22:54 -0700

#30675 — Re: local variable 'a' referenced b

FromDemian Brecht <demianbrecht@gmail.com>
Date2012-10-02 22:54 -0700
SubjectRe: local variable 'a' referenced b
Message-ID<mailman.1754.1349243658.27098.python-list@python.org>
On 12-10-02 07:26 PM, Dave Angel wrote:
>
> if you're stuck with Python2.x, you can use a mutable object for a, and
> mutate it, rather than replace it.  For example,
>
>
> def foo():
>       a = [3]
>       def bar():
>           b=2
>           a.append(b)   #this mutates a, but doesn't assign it
>           print (a)
>           a[0] += b  #likewise, for a number within the list
>           print (a)
>       bar()
>
> That should work in either 2.x or 3.2
>

Alternatively, you can restructure your code by simply adding a 
parameter to bar(). Nice thing about this is that if you ever move bar() 
out into another module, then you don't have to worry about documenting 
the side effects on 'a' so users (including yourself) aren't confused later:

 >>> def foo():
...     a = 1
...     def bar(n):
...             b = 2
...             return n + b
...     a = bar(a)
...     print a
...
 >>> foo()
3


-- 
Demian Brecht
@demianbrecht
http://demianbrecht.github.com

[toc] | [standalone]


Back to top | Article view | comp.lang.python


csiph-web