Executing a string as python code
Steve Holden
sholden at holdenweb.com
Wed Oct 24 08:20:17 EDT 2001
"Stephen Boulet" <stephen at theboulets.net> wrote in message
news:ttdbclaabhte92 at corp.supernews.com...
> Yes, but this is no cgi script. It's in my program, which, after all, also
> executes python code.
>
> If I write:
>
> <<
> command = ''
> for i in range(100):
> command = command + 'list%d = []\n' % i
>
> exec(command)
>
> >>
>
> That's no less secure than typing them out by hand, right?
>
This may be so. But your next problem is then presumably to write a loop to
process each of these different variables. The major point (assuming no user
input is associated with your executed code) is the pollution of your name
space in a way which doesn't help you in your overall programming goal.
You haven't yet demonstrated why you'd rather run your code than something
like
lst = []
for i in range(100):
lst.append([])
If you really need 100 different empty lists, why not create a list, or
dictionary, of lists to hold them? Saving each one as a variable makes them
difficult to deal with, which is quite unnecessary. Your way you have to
create a statement referencing listN and then execute it.
stmt = "list%d.append(something)" % n
exec(stmt)
With a list of lists you can just execute
lst[n].append(something)
Simpler, cleanr, faster. Where are the *dis*advantages?
regards
Steve
--
http://www.holdenweb.com/
More information about the Python-list
mailing list