Zmień słownik, który służy jako globalny zakres funkcji

Chcę zrobić@pure dekorator dla Pythona, częścią tego jest możliwość selektywnego uniemożliwienia dostępu do globalnego zakresu funkcji.

Czy istnieje sposób na programową zmianę tego, który słownik służy jako globalny / zewnętrzny zakres funkcji?

Na przykład w poniższym chcę mieć możliwość przechwycenia dostępu dof wh i rzuć błąd, ale chcę zezwolić na dostępg ponieważ jest to czysta funkcja.

def f():
    print("Non-pure function")

@pure
def g(i):
    return i + 1

@pure
def h(i):
    f()
    return g(i)

questionAnswers(1)

yourAnswerToTheQuestion