Re: modifying locals

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Steve Holden

    Re: modifying locals

    John [H2O] wrote:
    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]))
    >
    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.
    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.
    >
    Return them as a tuple, using an unpacking assignment to bind the
    different elements to different names.
    Bringing up another matter... is there a better way to do this that doesn't
    use exec?
    >
    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/

Working...