Fundamental data types like integers, floats, booleans and strings are immutable in Python. Immutable means the object cannot be changed once created. For integers from 0 to 256, Python reuses the same integer objects to save memory. It also reuses the two boolean objects for True and False. For strings, a new object is created each time due to the large number of possible string values. Floats and complexes are also immutable and do not reuse objects. Immutability helps improve performance and memory usage in Python.