Мое понимание static
в C ++ состоит в том, что оно может принимать несколько значений.
Я понимаю, что вы понимаете под "static
в C ++" - это переменная, которая поддерживает состояние между вызовами. Самая близкая вещь в python - это переменная global
.
nonlocal
ограничивает время жизни значения во вложенной функции тем же, что и у функции включения. Это компромисс между global
и local
.
Если вы пропустите nonlocal
во внутренней функции, то переменная там будет иметь ту же область действия и время жизни, что и внутренняя функция. Если, конечно, вы читали и не писали это, в этом случае это соответствовало бы объему функции включения, но не служило для поддержания какого-либо состояния из внутренней функции.