Qué es el espacio de nombres:
Un espacio de nombres es un sistema que tiene un nombre único para todos y cada uno de los objetos en Python. Un objeto puede ser una variable o un método. Python mismo mantiene un espacio de nombres en forma de diccionario de Python. Veamos un ejemplo, una estructura de sistema de directorios y archivos en las computadoras. No hace falta decir que uno puede tener varios directorios con un archivo con el mismo nombre dentro de cada directorio. Pero uno puede ser dirigido al archivo, si lo desea, simplemente especificando la ruta absoluta al archivo.
Ejemplo en tiempo real, el papel de un espacio de nombres es como un apellido. Es posible que uno no encuentre una sola «Alice» en la clase, puede haber varias «Alice», pero cuando pregunte particularmente por «Alice Lee» o «Alice Clark» (con un apellido), solo habrá una (el momento no se No creo que tanto el nombre como el apellido sean iguales para varios estudiantes).
De manera similar, el intérprete de Python comprende qué método exacto o variable está tratando de señalar en el código, según el espacio de nombres. Entonces, la división de la palabra en sí da un poco más de información. Su Nombre (que significa nombre, un identificador único) + Espacio (que habla de algo relacionado con el alcance). Aquí, un nombre puede ser cualquier método o variable de Python y el espacio depende de la ubicación desde donde se intenta acceder a una variable o método.
Tipos de espacios de nombres:
Cuando el intérprete de Python se ejecuta únicamente sin módulos, métodos, clases, etc. definidos por el usuario. Algunas funciones como print(), id() siempre están presentes, estos son espacios de nombres integrados. Cuando un usuario crea un módulo, se crea un espacio de nombres global, luego la creación de funciones locales crea el espacio de nombres local. El espacio de nombres integrado abarca el espacio de nombres global y el espacio de nombres global abarca el espacio de nombres local .
La vida útil de un espacio de nombres:
El tiempo de vida de un espacio de nombres depende del alcance de los objetos, si el alcance de un objeto termina, el tiempo de vida de ese espacio de nombres llega a su fin. Por lo tanto, no es posible acceder a los objetos del espacio de nombres interno desde un espacio de nombres externo.
Ejemplo:
Python3
# var1 is in the global namespace var1 = 5 def some_func(): # var2 is in the local namespace var2 = 6 def some_inner_func(): # var3 is in the nested local # namespace var3 = 7
Como se muestra en la siguiente figura, el mismo nombre de objeto puede estar presente en varios espacios de nombres, ya que su espacio de nombres mantiene el aislamiento entre el mismo nombre.
Pero en algunos casos, uno podría estar interesado en actualizar o procesar solo variables globales, como se muestra en el siguiente ejemplo, uno debe marcarlo explícitamente como global y actualizar o procesar. Tenga en cuenta que la línea «recuento = recuento +1» hace referencia a la variable global y, por lo tanto, utiliza la variable global, pero compárelo con la misma línea escrita «recuento = 1». Luego, la línea «recuento global» es absolutamente necesaria de acuerdo con las reglas de alcance.
Python3
# Python program processing # global variable count = 5 def some_method(): global count count = count + 1 print(count) some_method()
Producción:
6
Alcance de los objetos en Python:
El alcance se refiere a la región de codificación desde la cual se puede acceder a un objeto particular de Python. Por lo tanto, no se puede acceder a ningún objeto en particular desde ningún lugar del código, el acceso debe estar permitido por el alcance del objeto.
Tomemos un ejemplo para tener una comprensión detallada de la misma:
Ejemplo 1:
Python3
# Python program showing # a scope of object def some_func(): print("Inside some_func") def some_inner_func(): var = 10 print("Inside inner function, value of var:",var) some_inner_func() print("Try printing var from outer function: ",var) some_func()
Producción:
Inside some_func Inside inner function, value of var: 10 Traceback (most recent call last): File "/home/1eb47bb3eac2fa36d6bfe5d349dfcb84.py", line 8, in some_func() File "/home/1eb47bb3eac2fa36d6bfe5d349dfcb84.py", line 7, in some_func print("Try printing var from outer function: ",var) NameError: name 'var' is not defined
Publicación traducida automáticamente
Artículo escrito por Shivam Dhanadhya y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA