Pyenos wrote: > Fredrik Lundh <[EMAIL PROTECTED]> writes: > > >>Pyenos wrote: >> >> >>>#############################CODE############################## >>>t_len=0 >>>class WORK: >>> def getwork(self): >>> def formattable(table_to_process,type): >>>TYPE=["p","t","T","s","i"] #list of types to format >>> if type==TYPE[1]: >>> def format_t(): >>> row=[] >>> for col in table_to_process: >>> ####################### >>> # ERROR PRONE PART # >>> ####################### >>> if len(str(col))>t_len: >>> t_len=len(str(col)) >>> ####################### >>># Error message says: # >>># UnboundLocalError: local variable 't_len' referenced before assignment# >>> row+=col >>> if (table_to_process.index(col)+1)%7==0: >>> t_temp.append(row) >>> row=[] >>> format_t() >>>################################################################# >> >>wow. >> >> >>>Interpreter says that t_len is local variable although i have >>>specified t_len=0 in line 1. Also, although i've stated t_len=0 in >>>line 1, it says that t_len is referenced before assignment. >> >>each function introduces a new scope. >> >></f> > > > does class WORK inherit t_len=0 from line1? > > does def getwork() inherit t_len=0 from line1? > > does def formattable(table_to_process,type) inherit t_len=0 from line1? > > does def format_t() inherit t_len=0 from line1? > > thanks. >
Yes and no, depending. The rule of thumb I use is that if you assign in a function, the name is not taken from the enclosing scope. For example, compare: # example 1 def doit(): t_len = 42 def nested(): print t_len nested() doit() # will print 42 # example 2 def doit(): t_len = 42 def nested(): if t_len > 0: print t_len else: t_len = 1 nested() doit() # will get "referenced before assignment" error You could make use of your WORK class here, depending on whether t_len makes sense as a member of the WORK class: class WORK: t_len = 0 def getwork(self): def formattable(table_to_process,type): # etc., etc. WORK.t_len = len(str(col)) James -- James Stroud UCLA-DOE Institute for Genomics and Proteomics Box 951570 Los Angeles, CA 90095 http://www.jamesstroud.com/ -- http://mail.python.org/mailman/listinfo/python-list