Default scope of variables

Steven D'Aprano steve+comp.lang.python at pearwood.info
Thu Jul 4 01:45:11 EDT 2013


On Thu, 04 Jul 2013 05:30:03 +0100, Joshua Landau wrote:

> That said, I'm not too convinced. Personally, the proper way to do what
> you are talking about is creating a new closure. Like:
> 
> for i in range(100):
>     with new_scope():
>         for i in range(100):
>             func(i)
>     func(i) # Using i from original loop
> 
> But it's not like Python'll ever support that.

Probably not, but Python does support this:


for i in range(100):
    for j in range(100):
        func(j)
    func(i) # Using i from original loop


which solves the problem of inner i overwriting outer i nicely.



-- 
Steven



More information about the Python-list mailing list