A namespace is a declarative region that provides a scope to the identifiers (the names of types, functions, variables, etc) inside it. It is used to organize code into logical groups and to prevent name collisions that can occur especially when our code base includes multiple libraries. Namespace provides a class-like modularization without class-like semantics