Re: [Newbie] Referring to a global variable inside a function
Ernesto García García wrote: Hi experts, I've built a class for parsing a user-defined list of files and matching lines with a user-defined list of regular expressions. It looks like this: (snip code) But then, when I try to use my class using actions with memory it will fail: code import LineMatcher global count count = 0 def line_action(line, match_dictionary): count = count + 1 (snip) /code The error is: console (snip) UnboundLocalError: local variable 'count' referenced before assignment /console How would you do this? FWIW, I would *not* use a global. class LineAction(object): def __init__(self): self.count = 0 def __call__(self, line, match_dictionary): self.count +=1 line_action = LineAction() line_matcher = LineMatcher.LineMatcher() line_matcher.add_files('*') line_matcher.add_action(r'(?Pline.*)', line_action) line_matcher.go() HTH -- bruno desthuilliers python -c print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for p in '[EMAIL PROTECTED]'.split('@')]) -- http://mail.python.org/mailman/listinfo/python-list
Re: [Newbie] Referring to a global variable inside a function
Ernesto García García wrote: But then, when I try to use my class using actions with memory it will fail: code import LineMatcher global count count = 0 def line_action(line, match_dictionary): count = count + 1 line_matcher = LineMatcher.LineMatcher() line_matcher.add_files('*') line_matcher.add_action(r'(?Pline.*)', line_action) line_matcher.go() /code The error is: console Traceback (most recent call last): File Test.py, line 12, in ? line_matcher.go() File LineMatcher.py, line 21, in go action(line, match.groupdict()) File Test.py, line 7, in line_action count = count + 1 UnboundLocalError: local variable 'count' referenced before assignment /console How would you do this? def line_action(line, match_dictionary): global count # make it a module-global variable, not a function-local count = count + 1 /F -- http://mail.python.org/mailman/listinfo/python-list
Re: [Newbie] Referring to a global variable inside a function
How would you do this? def line_action(line, match_dictionary): global count # make it a module-global variable, not a function-local count = count + 1 /F OK, I had put it on the global block. Thanks, Ernesto -- http://mail.python.org/mailman/listinfo/python-list