Paul Moore wrote:

But you don't give any reason why you'd want to do that. Why are you
using subscript notation rather than a simple function call?

Good point. Consider
    >>> def f(*argv): pass
    >>> d = dict()

Now compare
    >>> f(1, 2) = 3
    SyntaxError: can't assign to function call
    >>> d[1, 2] = 3
    >>> d[1, 2]
    3

Item assignment (ie __setitem__) is the one thing that a function call can't do. If we want keywords in our __getitem__ and so on commands, then one route for item assignment is to allow
    >>> d[1, 2, a=3, b=4] = 5
as valid syntax.

By the way, another route is to use a simple function call, like so
    >>> d[o(1, 2, a=3, b=4)] = 5
which is already possible today. Some of us don't like this route.

-- 
Jonathan