【问题标题】:Python - Why 2 different functions identify the same tuple as <class 'tuple'> while another function identifies the same tuple as NonePython - 为什么 2 个不同的函数将相同的元组标识为 <class 'tuple'> 而另一个函数将相同的元组标识为 None
【发布时间】:2019-05-31 15:47:53
【问题描述】:

所以当我打电话时

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)) 语句时,它是一个非类型。我不明白为什么或如何使它成为这两个函数的元组。这只是我的代码的一部分,似乎有问题。

这就是我以前所说的 plot_bounces

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

还有一个处理 Ball 对象的类 Ball 的脚本。

我主要关心的是为什么print(type(circle)) 给我第一次打印的“元组”类和第二次打印的“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))

这两种情况不应该是一个元组吗?

【问题讨论】:

  • None 在 Python 中是一个单独的类型。你传递的是circle=None,类型是nonetype
  • 你打电话给update_ball( ..., circle=None)。在这两种情况下,您都应该拨打:update_ball(ball, boxWH_tuple, circle)
  • 不幸的是,我仍然没有区别

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


【解决方案1】:

plot_bounces() 调用update_ball() 时,请在圈出后去掉=None, 因为当您在调用(调用,而不是函数定义)中执行 circle=None 时,您将该参数作为 None 传递,因此会造成混淆。

电话应该是update_ball(ball, boxWH_tuple, circle)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-14
    • 2019-06-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    相关资源
    最近更新 更多