Consider the following example:
def main():
a = 'predefined'
variables = {'a':'dynamic'}
locals().update(variables)
print a
if __name__ == '__main__':
main()
When running the script, I expect to see:
dynamic
but i see
predefined
Why? How can I get a dynamic value instead?
Update:
The reason I ask: I have a program that takes a lot of input arguments with long variable names. I was hoping to just “unzip” everything the parser receives argparsein one calllocals().update(...)
def main():
a = 'predefined'
parser = argparse.ArgumentParser(description='My program')
parser.add_argument('-a', type=int, default=a, required=False);
input_variables = vars(parser.parse_args())
locals().update(input_variables)
print a
source
share