Да, хотя вы должны сначала объявить глобальную переменную, прежде чем она встретится в foo
:
x = 0
def foo():
global x
x += 1
print x
foo()
foo()
foo()
РЕДАКТИРОВАТЬ: В ответ на комментарий, это правда, что Python не имеет статических переменных, ограниченных в функции. Обратите внимание, что x
в этом примере предоставляется только как остальная часть модуля как глобальная. Например, скажем, код выше находится в test.py
. Теперь предположим, что вы пишете следующий модуль:
from test import foo
x = 100
foo()
foo()
Вывод будет только 1
и 2
, а не 101
и 102
.