SIGN IN SIGN UP

DOCS: Suggest always calling exec with a globals argument and no locals argument (GH-119235)

Many users think they want a locals argument for various reasons but they do not
understand that it makes code be treated as a class definition. They do not want
their code treated as a class definition and get surprised. The reason not
to pass locals specifically is that the following code raises a `NameError`:

```py
exec("""
def f():
    print("hi")

f()

def g():
    f()
g()
""", {}, {})
```

The reason not to leave out globals is as follows:

```py
def t():
    exec("""
def f():
    print("hi")

f()

def g():
    f()
g()
    """)
```
H
Hood Chatham committed
7e1a130b8ff1ed8b3a5f00fe0f06d3916b852216
Parent: 1195c16
Committed by GitHub <noreply@github.com> on 5/20/2024, 5:42:15 PM