Someone enlightened me

Gary Herron gherron at islandtraining.com
Sun Jul 13 17:23:28 CEST 2008


Marcus Low wrote:
> Opps here is the mail again, incase my formatting is lost, can someone 
> explain to me why this code behaves differently when "lister" and 
> "self.lister" is swap remarked.
>
>
> class abc :
>    # remark this later and unremark "self.lister"
>    lister = []
>    def __init__ (self, val):
>        #self.lister = []
>        self.lister.append(val) 
> globallist = []
>  
> def test () :
>
>    global l
>    for x in range(10) :
>        o = abc(x)              globallist.append(o)                 o 
> = ""
>          for i in globallist :
>        print i.lister        
> test()      
>
> -- 
> http://mail.python.org/mailman/listinfo/python-list

It's a Python scoping rule:

    If a variable is assigned to anywhere within a function,
    it is assumed to be local *everywhere* within that function.

See the faq for more:
  
http://www.python.org/doc/faq/programming/#what-are-the-rules-for-local-and-global-variables-in-python

Gary Herron




More information about the Python-list mailing list