Python - Почему две разные функции идентифицируют один и тот же кортеж как <class 'tuple'>, а другая функция идентифицирует тот же кортеж, что и None - PullRequest
0 голосов
/ 31 мая 2019

Итак, когда я звоню

plot_bounces( ball, numbounces, boxWH_tuple, circle=None )

, где ball - это объект, numbounces - это int, boxWH_tuple и circle - это кортежи, и в эту функцию помещается оператор print(type(circle)), это кортеж. Однако когда я вызываю update_ball(ball, boxWH_tuple, circle=None) оператор put a print(type(circle)) в этой функции, это не тип. Я не понимаю, почему и как сделать это кортежом для обеих функций. Это только часть моего кода, которая кажется проблематичной.

Это то, что я раньше называл plot_bounces

plot_bounces(Ball(-1,0,0.1), 1, (3,2), ( (0,0) ,0.4) )

Есть еще один скрипт с классом Ball, который имеет дело с объектом Ball.

Моя главная проблема в том, почему print(type(circle)) дает мне класс 'tuple' для первого отпечатка и класс 'NoneType' для второго отпечатка.

def plot_bounces(ball, numbounces, boxWH_tuple, circle=None):
    print(type (circle))
     #make space to store coordinates 
    xcoords = []
    ycoords = []
    #store the starting point 
    xcoords.append(ball.x)
    ycoords.append(ball.y)


    while numbounces>0 :
        #calls on update_ball and change the old values with new ones 

        update_ball(ball, boxWH_tuple, circle=None)
#       
        ball=update_ball(ball, boxWH_tuple, circle=None)

        xpoint = ball.x
        ypoint = ball.y

        ycoords.append(ypoint)
        xcoords.append(xpoint)

        numbounces+= -1


def update_ball(ball, boxWH_tuple, circle=None):
    print (type(circle))

Разве это не должно быть кортежем для обоих случаев?

1 Ответ

1 голос
/ 31 мая 2019

При вызове update_ball() из plot_bounces(), пожалуйста, удалите =None после круга, потому что, когда вы делаете circle=None в вызове (вызов, а не определение функции), вы передаете этот аргумент как None и, следовательно,путаница.

Звонок должен быть update_ball(ball, boxWH_tuple, circle)

...