October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsSlow PC?RecommendedPC slow today? Run a repair scan before it gets worseResolve common Windows issues and optimize system performance.Scan NowOctober DealsAmazon USDeal season is back - check today's better picksAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
World desk3 min

How to Fix “TypeError: ‘tuple’ object is not callable” in Python

Python raises this TypeError when code tries to call a tuple. Find the expression before the parentheses, then correct the indexing, tuple syntax, or name binding.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Find the expression immediately before the parentheses on the traceback line. Python is trying to call that value, but it is a tuple rather than a callable object. Replace the call with indexing if you want an element, correct the tuple syntax if a comma or grouping is wrong, or find where a name or attribute became bound to tuple data.

What the error means

In Python, value(...) is call syntax: Python evaluates value and tries to call the result. That result must be callable, such as a function. A tuple is an immutable sequence, not a function, so Python raises this error when the expression before the parentheses evaluates to a tuple. The tuple’s contents are not necessarily damaged; the problem is usually the operation or the name used at the call site. See the Python Language Reference on calls.

Use the final traceback frame in your own code as the starting point. On that line, identify the expression directly followed by parentheses, then check its value and type. The following cases cover the most common reasons it is a tuple.

Fix the expression that Python tried to call

Use square brackets to index a tuple

If you meant to retrieve an item, use subscription syntax with square brackets. Parentheses mean “call,” not “get the item at this position.”

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
items = ("red", "green", "blue")
first = items(0)       # Raises TypeError: tuple is not callable
first = items[0]       # Gets "red"

Tuples support indexing and unpacking; see Python’s tuple documentation.

Check commas and tuple grouping

When the failing line creates or uses tuple data, inspect its commas and grouping, especially in multiline expressions or adjacent rows. A comma can turn an expression into a tuple, so parentheses alone do not determine whether a tuple is being made. As the Python documentation puts it, “Note that it is actually the comma which makes a tuple, not the parentheses.”

For example, a trailing comma creates a one-item tuple:

result = make_value(),
print(type(result))  # <class 'tuple'>

If you later write result(), Python tries to call that tuple. Check the exact expression and intended grouping rather than assuming that removing parentheses will fix it. The Python issue tracker discussion also illustrates how a missing comma can contribute to this kind of confusing failure.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Find a function name that was reassigned

A name that referred to a function can be reassigned to a tuple before the failing call. Search earlier code for assignments to the name on the traceback line. For example:

def load_data():
    return "loaded"

load_data = ("old", "new")
load_data()  # The name now refers to a tuple

Rename the data variable or correct the assignment so the function name still refers to the function you intended to call. The same issue can occur if a variable is named tuple, shadowing Python’s built-in constructor.

In a notebook, earlier cells may have changed a name even if the current cell looks correct. If execution order is unclear, restart the kernel and run the cells in order.

Check whether an attribute is data or a method

A dot expression can refer to either an attribute containing data or a method. If object.attribute is a tuple, then object.attribute() attempts to call that tuple. Check the object’s runtime value and the library documentation; remove call parentheses when you want the data, or call the actual method if one is defined.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Verify the value at the call site

If the source still looks right, inspect the runtime object immediately before the parentheses. You can print its type and test whether it is callable:

print(value)
print(type(value))
print(callable(value))

callable(value) helps distinguish callable objects from data, but it does not prove that the value is the function you intended. Trace assignments to the name if the result is a tuple or another unexpected object.

  1. Read the final traceback frame in your code and locate the expression immediately before (...).
  2. Check whether you intended a function call, tuple indexing, or access to an attribute.
  3. Correct the operation or the assignment that supplied the tuple.
  4. Rerun the smallest relevant code path and confirm that it produces the expected result or moves past the failing line.

Prevent the same error

  • Use square brackets for sequence indexing and parentheses for function calls.
  • Avoid naming variables after built-ins or functions you still need to call.
  • Make commas and grouping clear in tuple literals, especially in multiline data.
  • When a notebook’s state is uncertain, restart the kernel and execute cells in order.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Windows Errors? Fix Them Before They SpreadFree repair scan
Outdated Drivers Are Slowing You DownFree scan - exact matches

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.