John [H2O] wrote:
Note that this code will likely fail to execute if D[key] is some object
whose str() method does not return a valid Python expression.
Return them as a tuple, using an unpacking assignment to bind the
different elements to different names.
It's not really obvious why you are trying to replicate the caller's
namespace inside this function. Perhaps you could explain a little more
what you are trying to achieve.
regards
Steve
--
Steve Holden +1 571 484 6266 +1 800 494 3119
Holden Web LLC http://www.holdenweb.com/
I would like to write a function to write variables to a file and modify a
few 'counters'. This is to replace multiple instances of identical code in a
module I am writing.
>
This is my approach:
>
def write_vars(D):
""" pass D=locals() to this function... """
for key in D.keys():
exec("%s = %s" % (key,D[key]))
>
few 'counters'. This is to replace multiple instances of identical code in a
module I am writing.
>
This is my approach:
>
def write_vars(D):
""" pass D=locals() to this function... """
for key in D.keys():
exec("%s = %s" % (key,D[key]))
>
whose str() method does not return a valid Python expression.
outfile.write(. ..)
numcount += 1
do this, do that...
>
the issue is that at the end, I want to return outfile, numcount, etc... but
I would prefer to not return them explicitly, that is, I would just like
that the modified values are reflected in the script. How do I do this?
Using global? But that seems a bit dangerous since I am using exec.
>
numcount += 1
do this, do that...
>
the issue is that at the end, I want to return outfile, numcount, etc... but
I would prefer to not return them explicitly, that is, I would just like
that the modified values are reflected in the script. How do I do this?
Using global? But that seems a bit dangerous since I am using exec.
>
different elements to different names.
Bringing up another matter... is there a better way to do this that doesn't
use exec?
>
use exec?
>
namespace inside this function. Perhaps you could explain a little more
what you are trying to achieve.
regards
Steve
--
Steve Holden +1 571 484 6266 +1 800 494 3119
Holden Web LLC http://www.holdenweb.com/