third_global = 3  # グローバルスコープ


class TestClass(object):
    class_var = "class var"  # クラス変数


def func():
    second_enclosing = 2  # エンクロージングスコープ

    def inner():
        first_local = 1  # ローカルスコープ

        # Pythonは、変数を、①・②・③・④の順番で探し、見つかったものを使います
        print(first_local)  # ①ローカルスコープ
        print(second_enclosing)  # ②エンクロージングスコープ
        print(third_global)  # ③グローバルスコープ
        # 4th: どこからでもアクセス出来るlen関数
        # ④ビルトイン関数のlen関数は、ビルトインスコープ
        print(f"class_varの値は、{len(TestClass.class_var)}文字です")

    inner()


# ワンポイント:Pythonは、関数やclassの巻き上げはなく、上から順番に実行されます
func()

# 実行結果
# 1
# 2
# 3
# class_varの値は、9文字です