En este artículo, entenderemos el concepto de sombreado de variables en un lenguaje de programación Python. Para comprender este concepto, debemos estar bien versados en el alcance de una vida útil de variables en python.
Variables locales:
Cuando definimos una función, podemos crear variables cuyo ámbito sea únicamente para esa función y que no sean accesibles fuera de la función. Estas variables se conocen como variables locales (ya que son locales para la función)
Python3
def fn(): # local variable a a = 3 print(a) # Error, variable a referenced before # assignment print(a)
Producción:
NameError: name 'a' is not defined
Variables globales
Las variables se definen fuera de cualquier función y son potencialmente accesibles en cualquier parte del programa.
Python3
# global variable a = 3 def fn(): # print 3 print(a) # print 3 print(a)
Producción:
3
Nota: Para obtener más información, consulte nuestras Variables locales y globales en Python
El sombreado de variables ocurre cuando una variable definida en el ámbito interno tiene el mismo nombre que una variable en el ámbito externo. Considere el siguiente ejemplo, aquí la variable dentro de la función tiene el mismo nombre que una variable global. En este programa, hay dos versiones de la variable a, una que se define globalmente y la otra que se define dentro del contexto de la función. Python trata estas variables como variables completamente separadas. Se dice que la variable global a está sombreada por la variable local a. La forma en que se manejan las variables externas e internas con el mismo nombre depende de las reglas de resolución de nombres del lenguaje.
Python3
# global variable a = 3 def fn(): # local variable a = 5 print(a) # prints 5 fn() print(a) # prints 3
5 3
¿Cómo evitar el sombreado variable?
Para modificar una variable global y evitar el sombreado de variables, python proporciona una palabra clave global que le dice a python que use la versión global de la variable, en lugar de crear una nueva variable de ámbito local.
Python3
# global variable a = 3 def fn(): global a # global variable modified a = 5 print(a) # prints 5 print(a) # prints 5 fn()
Producción:
3 5
Para evitar el sombreado de variables a nivel de función, es decir, si una variable en una función externa tiene el mismo nombre que una variable en una función interna, python proporciona una palabra clave no local que le indica a python que use la variable definida en la función externa, en lugar de crear una nueva. variable de ámbito local
Python3
def outer(): a = 5 def inner(): nonlocal a a = 3 print(a) # prints 3 inner() print(a) # prints 3 outer()
Producción:
3 3
Publicación traducida automáticamente
Artículo escrito por mostaptname y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA