Namespaces & Scope in Python
Tags: programming, python, beginners, 100daysofcode
Published: 2022-10-29 02:17:20

The three main types of namespaces in python are **Built-in Name spaces**, **Global Namespaces**, and **Local Namespaces**.  

Lets break down Namespace. Name is the identifier and space is an address in the main memory associated with that object. 


* [Built-in Namespace](#Built-in Namespace) 
* [Global Namespace](#Global Namespace) 
* [Local Namespace](#Local Namespace) 

##Built-in Namespace, <a name="Built-in Namespace"></a>
_Built-in namespaces You can use the following statement in order to see all of the standard built-in namespace! 

`print(dir(__builtins__))`

- You will see something like this 

```
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'ModuleNotFoundError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'all', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']
```

## Global Namespace, <a name="Global Namespace"></a>
_Global namespaces_ contain any names defined at the program or module level. Python creates the global namespace when the main program of the body starts, and exists until the program is terminated by the python interpreter.

## Local namespace, <a name="Local Namespace"></a>
_Local namespace_ is defined for a function, a class, a loop, or any block of code. The names defined in a block of code are local which means the variable names **cannot** me accessed outside of the block of code. local namespace is created when the block of code or the function starts executing and will terminate when the block of code or function terminates.