Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> python

Entendiendo variables globales, locales y nonlocal en Python

Entendiendo variables globales, locales y nonlocal en Python

Domine el uso de variables globales, locales y nonlocal en Python, y sepa cuándo aplicar cada una para código limpio y mantenible.

Video: Variables locales y globales en Python

Variables globales

En Python, una variable declarada fuera de cualquier función—a nivel de módulo—es una variable global. Puede leerse desde cualquier parte del módulo, pero debe declararse con la palabra clave global si desea modificarla dentro de una función.

Ejemplo: crear y leer una variable global

x = "global"
def foo():
    print("x dentro:", x)
foo()
print("x fuera:", x)

Salida

x dentro: global
x fuera: global

Intentar reasignar x sin declararla global resulta en UnboundLocalError:

x = "global"
def foo():
    x = x * 2
    print(x)
foo()

Salida

UnboundLocalError: local variable 'x' referenced before assignment

Para modificar una variable global dentro de una función, use la palabra clave global:

x = "global"
def foo():
    global x
    x = x * 2
    print(x)
foo()

Salida

globalglobal

Variables locales

Una variable local se define dentro del cuerpo de una función y existe solo durante la ejecución de esa función. No puede accederse fuera de la función.

Ejemplo: acceder a variable local fuera de su ámbito

def foo():
    y = "local"
foo()
print(y)

Salida

NameError: name 'y' is not defined

Definir y usar una variable local correctamente:

def foo():
    y = "local"
    print(y)
foo()

Salida

local

Combinando variables globales y locales

Es común usar ambos ámbitos en el mismo módulo. La palabra clave global asegura que una variable se refiera a la instancia a nivel de módulo.

x = "global "
def foo():
    global x
    y = "local"
    x = x * 2
    print(x)
    print(y)
foo()

Salida

global global
local

Cuando una variable local comparte nombre con una global, son independientes:

x = 5
def foo():
    x = 10
    print("x local:", x)
foo()
print("x global:", x)

Salida

x local: 10
x global: 5

Variables nonlocal

Las funciones anidadas pueden acceder y modificar variables de su ámbito envolvente (pero no global) usando la palabra clave nonlocal.

def outer():
    x = "local"
    def inner():
        nonlocal x
        x = "nonlocal"
        print("inner:", x)
    inner()
    print("outer:", x)
outer()

Salida

inner: nonlocal
outer: nonlocal

Nota: Actualizar una variable nonlocal dentro de la función interna actualiza la variable en el ámbito de la función externa.

python

  1. Variables, constantes y literales en C: guía completa
  2. Palabras clave e identificadores en Python: Dominando palabras reservadas y convenciones de nomenclatura
  3. Sentencias, indentación y comentarios en Python: Guía clara
  4. Variables, constantes y literales en Python – Guía completa
  5. Dominando conversión y casting de tipos en Python: Guía completa
  6. Dominando E/S e importación de módulos en Python: Guía práctica
  7. Dominando la palabra clave global en Python: Cómo y cuándo usarla
  8. Dominando Números, Conversión de Tipos y Matemáticas en Python
  9. Dominando Operaciones de Directorios y Archivos en Python
  10. Dominando Errores y Excepciones Integradas en Python
  11. Entendiendo type() e isinstance() en Python: ejemplos prácticos