globals3 = dict(list(globals().items()) + [('d', {(1): 'a', (2): 'b', (3): 'c'}),
    ('test', 2)])
exec("""def f():
    new = d.copy()
    new.pop(test)
    return new
new = f()""")
понимание словаря python в exec использует глобальные переменные вместо локальных