Python 'Bool' object is not subscriptable - returning multiple values from function

My brain is starting to hurt from trying to fix this so somebody please help!

I need to return 2 values from a function collision one of which is called defender and is the name of the player defending the ball handler; the other is collide which is either TrueorFalse. I read I might be able to fix this error using str(True) hence why it appears that way.

There is 2 functions involved:

def holdingBall():
    for i in range(numPlayers):
                if theBall.holder == myGame1.team1players[i]:
                    theBall.x = myGame1.team1players[i].x
                    theBall.y = myGame1.team1players[i].y
                    theBall.angle = myGame1.team1players[i].angle
                    theBall.speed = myGame1.team1players[i].speed
                    holdingBall.possesion = ("team1")
                elif theBall.holder == myGame1.team2players[i]:
                    theBall.x = myGame1.team2players[i].x
                    theBall.y = myGame1.team2players[i].y
                    theBall.angle = myGame1.team2players[i].angle
                    theBall.speed = myGame1.team2players[i].speed
                    holdingBall.possesion = ("team2")

This changes all the Balls attributes to the Players. (who is holding the ball) I then created a possesion variable in the game loop like this;

        possesion = (holdingBall.possesion)

This new variable (holding a string) is then passed to this function:

def collision(possesion):
    for i in range(numPlayers):
        dx = 0
        dy = 0
        if possesion == ("team1"):
            dx = theBall.holder.x - myGame1.team2players[i].x
            dy = theBall.holder.y - myGame1.team2players[i].y
            distance = math.hypot(dx,dy)
            if distance < theBall.holder.size + myGame1.team2players[i].size:
                defender = myGame1.team2players[i].playername
                collide = str(True)
                return [defender,collide]

        elif possesion == ("team2"):
            dx = theBall.holder.x - myGame1.team1players[i].x
            dy = theBall.holder.y - myGame1.team1players[i].y
            distance = math.hypot(dx,dy)
            if distance < theBall.holder.size + myGame1.team1players[i].size:
                defender = myGame1.team1players[i].playername
                collide = str(True)
                return [defender,collide]

Here I am checking if the ball holder is obstructed by any defense and creating two variables to store 1) the player name and 2) that a collision has happened -True-.

I have then (in the game loop) tried to separate this return using simple indexing like this:

        defender, collide = collision(possesion)

But I have the error "TypeError: 'bool' object is not iterable ". Upon further research I also tried this:

    returned = collision(possesion)
    collide = (returned[1])

and received the error "TypeError: 'bool' object is not subscriptable ".

Can somebody just relieve my stress and headache by finding a means of having two variables returned from this collision(possesion) function!

When printing collision(possesion) I get a result of [['Player Name'], 'True'] as expected, I just cant split this list :(

P.S I know possesion is spelt wrong but I used it in early stages and I fear changing it now :'D


Traceback: **

Traceback (most recent call last):
File "C:\Users\Rowan\Documents\Basketball Sim Test", line 421, in <module>
File "C:\Users\Rowan\Documents\Basketball Sim Test", line 400, in game_intro
File "C:\Users\Rowan\Documents\Basketball Sim Test", line 334, in startGame
collide = (returned[1])
TypeError: 'bool' object is not subscriptable