Checking for balanced brackets in Python
Review

Your implementation is quite good, but ofcourse there are always some things that can be improved upon.


Use a if __name__ == '__main__' guard, see what they do.
opening closing and mapping could be done a bit simpler


You may use list over the values, to create a list, 
And you may zip those in a dictionary with the zip keyword.

If you need to add alot of corner cases, your algorithm is likely off somewhere else.
Consider adding Testcases, Docstrings, or both in the form of Doctest. To make it easier to Test your algorithm.


Alternative code

def is_matched(expression):
    """
    Finds out how balanced an expression is.
    With a string containing only brackets.

    &gt;&gt;&gt; is_matched('[]()()(((([])))')
    False
    &gt;&gt;&gt; is_matched('[](){{{[]}}}')
    True
    """
    opening = tuple('({[')
    closing = tuple(')}]')
    mapping = dict(zip(opening, closing))
    queue = []

    for letter in expression:
        if letter in opening:
            queue.append(mapping[letter])
        elif letter in closing:
            if not queue or letter != queue.pop():
                return False
    return not queue

if __name__ == '__main__':
    import doctest
    doctest.testmod()