On Sat, 2006-07-22 at 17:18 +0200, Karl Pflästerer wrote:
> On 22 Jul 2006, [EMAIL PROTECTED] wrote:
>
> >
> > On Sat, 2006-07-22 at 14:11 +0100, John CORRY wrote:
> >> Hi,
> >>
> >> I am refactoring my code. I am trying to reduce the amount of lines
> >> by using more loops. I tend to use copy and paste a lot instead of
> >> writing a loop to do the work.
> >>
> >> For example, I have 30 textentry boxes numbered from entry20 to
> >> entry50.
> >> I have used the following code to assign the entryboxes to a local
> >> name.
> >>
> >> text20 = self.wTree.get_widget("entry20")
> >> text21 = self.wTree.get_widget("entry21")
> >>
> >> I have had a go at writing a loop for the above 30 textentry boxes.
> >> It is below, but it does not work.
> >>
> >> for x in range(20,51):
> >> ent = "entry%s" % (str(x))
> >>
> >> text_x = self.wTree.get_widget(ent)
> >>
> >> Is it possible to do what I want it to do?
> >
> > NO. You are looking to create local variables "on the fly". But there
> > is a simple solution that accomplishes what you really want.
>
> The "no" is not absolutely right IMO. He could write directly in the
> dictionary he gets when he calls locals() (but I think you're right in
> saying that this is only seldom a good idea).
Well the reference documentation says:
locals(
)
Update and return a dictionary representing the current local
symbol table. Warning: The contents of this dictionary should
not be modified; changes may not affect the values of local
variables used by the interpreter.
I believe the compiler thinks it knows of all the local variables, so I
think assignment to locals() is likely to lead to grief even it appears
to work in simple test cases.
--
Lloyd Kvam
Venix Corp
_______________________________________________
Tutor maillist - [email protected]
http://mail.python.org/mailman/listinfo/tutor