En programación, un espacio de nombres (del inglés namespace), en su acepción más simple, es un conjunto de nombres en el cual todos los nombres son únicos.
Un espacio de nombres es un contenedor abstracto en el que un grupo de uno o más identificadores únicos pueden existir. Un identificador definido en un espacio de nombres está asociado con ese espacio de nombres. El mismo identificador puede independientemente ser definido en múltiples espacios de nombres, eso es, el sentido asociado con un identificador definido en un espacio de nombres es independiente del mismo identificador declarado en otro espacio de nombres. Los lenguajes que manejan espacio de nombres especifican las reglas que determinan a qué espacio de nombres pertenece una instancia de un identificador.
Por ejemplo, Pedro trabaja para la compañía X y su número de empleado es 123. María trabaja para la compañía Y y su número de empleada también es 123. La razón por la cual Pedro y María pueden ser identificados con el mismo número de empleado es porque trabajan para compañías diferentes. Diferentes compañías simbolizan en este caso diferentes espacios de nombres.
En programas grandes o en documentos no es infrecuente tener cientos o miles de identificadores. Los espacios de nombres (o técnicas similares como la emulación de espacios de nombres) disponen de un mecanismo para ocultar los identificadores locales. Proporcionan los medios para agrupar lógicamente los identificadores relacionados en sus correspondientes espacios de nombres, haciendo así el sistema más modular.
Muchos lenguajes de programación manejan espacios de nombres. En algunos lenguajes, como C++, PHP o Python, estos identificadores nombrando espacios de nombres están asociados con un espacio de nombres que los agrupa. Así pues, en estos lenguajes, los espacios de nombres se pueden anidar formando un árbol de espacios de nombres. En la raíz de este árbol se encuentra el espacio de nombres anónimo global.
muy buen aporte>gracias