In Post #58, we learned that tuples are created using parentheses, like my_tuple = (1, 2, 3)
. This seems straightforward, but there is a subtle syntax rule that catches nearly every new Python programmer by surprise, especially when trying to create a tuple with only one item.
In this post, we’ll look at this specific “gotcha” and learn the critical role the comma plays in defining a tuple.
The Problem: A Tuple with One Item
Creating an empty tuple (()
) or a tuple with multiple items ((1, 2, 3)
) is easy. So, you might logically assume that to create a tuple with a single item, you would just put that item in parentheses.
Let’s see what Python thinks of that.
# This does NOT create a tuple
not_a_tuple = (5)
print(f"The value is: {not_a_tuple}")
print(f"The type is: {type(not_a_tuple)}")
The output is surprising:
The value is: 5
The type is: <class 'int'>
Instead of a tuple, we just got an integer. Why? Because Python interprets the parentheses in (5)
not as a tuple, but as standard mathematical grouping parentheses, like in (5 + 2) * 3
. It simply evaluates the expression inside them, which is just the integer 5
.
The Solution: The Trailing Comma
To tell Python that you want to create a tuple with a single element, you must include a trailing comma after the item, inside the parentheses.
# This DOES create a tuple
is_a_tuple = (5,)
print(f"The value is: {is_a_tuple}")
print(f"The type is: {type(is_a_tuple)}")
Now, the output is what we expect:
The value is: (5,)
The type is: <class 'tuple'>
That one, single comma makes all the difference. It’s the signal to Python that you are intentionally creating a tuple, not just grouping an expression.
The Comma Makes the Tuple, Not the Parentheses
This leads to a surprising realization for many: it is the comma that is the primary syntax for creating a tuple, not the parentheses. The parentheses are often just for grouping and clarity.
You can actually create a tuple by separating values with commas, even without parentheses.
# Python automatically creates a tuple here
my_tuple = 10, 20, 30
print(type(my_tuple))
# This also works for a single-element tuple
single_item_tuple = 10,
print(type(single_item_tuple))
Both of these will print <class 'tuple'>
.
While you can omit the parentheses in many cases, it is a strong convention and a good practice to always use parentheses when defining a tuple. It makes your code much clearer and avoids potential confusion.
What’s Next?
You’ve now learned the most peculiar rule about creating tuples: a single-element tuple requires a trailing comma, like (value,)
. Remember that it’s the comma, not the parentheses, that truly defines the tuple.
This syntax might seem a little strange, but tuples have some incredibly elegant features. One of the most “Pythonic” and useful is the ability to assign the items of a tuple to multiple variables at once. In Post #60, we will explore this powerful technique known as tuple unpacking.
Author

Experienced Cloud & DevOps Engineer with hands-on experience in AWS, GCP, Terraform, Ansible, ELK, Docker, Git, GitLab, Python, PowerShell, Shell, and theoretical knowledge on Azure, Kubernetes & Jenkins. In my free time, I write blogs on ckdbtech.com