Sí, aunque usted tiene que declarar su variable global en primer lugar antes de que se encuentra en foo
:
x = 0
def foo():
global x
x += 1
print x
foo()
foo()
foo()
EDIT: En respuesta a la observación, es cierto que Python no tiene variables estáticas con ámbito dentro de una función. Tenga en cuenta que x
en este ejemplo solo está expuesto como global al resto del módulo. Por ejemplo, supongamos que el código anterior está en test.py
. Ahora supongamos que escribir el siguiente módulo:
from test import foo
x = 100
foo()
foo()
La salida sólo será 1
y 2
, no 101
y 102
.
Para los fanáticos de pitón: Tenga en cuenta que las variables de estado no solo se utilizan para generadores en Perl. Son una forma práctica de encapsular información que necesita persistir con alguna función a lo largo de su vida útil. :) –