嵌套类与范围

cls*_*999 5 python scope

我是编程新手.首先,以下是我的代码:

x = 11

def f():
    x = 22
    print(x)
    class C:
        print(x)

f()
Run Code Online (Sandbox Code Playgroud)

我得到三个打印结果,"22 22",作为输出.当我改变我的代码时:

x = 11

def f():
    x = 22
    print(x)
    class C:
        print(x)
        x = 33
        print(x)

f()
Run Code Online (Sandbox Code Playgroud)

我得到了"22 11 33",而不是我所期待的:"22 22 33".

看起来当我x在嵌套类中添加局部时,变量搜索的顺序会发生变化.我相信还有一些关于范围的技巧我还不知道.任何人都可以向我解释这个吗?