Python-为什么2个不同的函数将相同的元组标识为<class'tuple'=“”>,而另一个函数将相同的元组标识为None

时间:2019-05-31 15:47:54

标签: python python-3.x types tuples nonetype

所以当我打电话

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

其中ball是一个对象,numbounces是一个int,boxWH_tuple和circle是元组,并在此函数中放置print(type(circle))语句,它是一个元组。但是,当我在此函数中调用update_ball(ball, boxWH_tuple, circle=None)放置一个print(type(circle))语句时,它是一个nonetype。我不明白为什么也不能将它变成两个函数的元组。这只是我的代码的一部分,似乎有问题。

这就是我过去所说的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 个答案:

答案 0 :(得分:1)

update_ball()呼叫plot_bounces()时,请在圆圈后面删除=None, 因为当您在调用(调用,而不是函数定义)中进行circle=None时,您会将该参数作为None传递,因此造成混淆。

呼叫应为update_ball(ball, boxWH_tuple, circle)