import sys, pprint

code_block = """
x, y = 'Hello', 'World'
print x
expr_assign('x', 'y')
print x
"""


def expr_assign(a, b):
    f = sys._getframe(1)
    exec "%s = %s" % (a, b) in f.f_globals, f.f_locals

def broken_main():
    x, y = 'Hello', 'World'
    print x
    expr_assign('x', 'y')
    print x

def working_main():
    exec code_block

if __name__ == '__main__':
    broken_main()
    working_main()

    exec code_block

