Immutability in Python

In Python, immutable vs mutable data types and objects types can cause some confusion—and weird bugs. With this video course you’ll see what the difference between mutable and immutable data types is in Python, and how you can use it to your advantage in your own programs.

You’ll also see how to deal with a language quirk in Python that allows objects referenced by immutable types to me modified. Python’s definition of “immutable” can be a bit misleading.

Basically, the promise of “immutability” on tuples is only partly true. The tuple itself cannot be modified, but objects referenced by the tuple can be. This is sometimes called “non-transitive immutability.”

If the tuple has an immutable field like a string for example, then it cannot be modified. A mutable field like a list however, can be edited, even if it’s embedded in the “immutable” tuple.

When the Python documentation refers to an object as being “immutable” they mean the behavior above observed. Other immutable types in Python behave the same way, e.g. namedtuples or frozensets.

If you’ve ever encountered the following exception and now you want to know why, this is the video course for you:

TypeError: 'tuple' object does not support item assignment

About Dan Bader

Dan Bader

Dan is the Chief Python Nut at Real Python. He helps Python developers take their coding skills to the next level with Python tutorials, books, and online training.

» More about Dan

Each tutorial at Real Python is created by a team of developers so that it meets our high quality standards. The team members who worked on this tutorial are:

Participant Comments

Tonya S on July 3, 2019

Wow! This video series cleared up so much confusion for me regarding immutable objects! Thank you Dan!

« Browse All Courses