Turtle.xcor() 未用作我的默认参数值

Turtle.xcor() is not being applied as my default argument value

所以我在摆弄 Trinket 的 Python 代码。我想制作一个快速功能,我可以在其中设置 x、y 或两个位置。这是我目前拥有的:

def MoveTo(x = t.xcor(), y = t.ycor()):
  print 'xcor:', t.xcor(), 'ycor:', t.ycor()
  print 'x:', x, 'y:', y
  t.penup()
  t.goto(x, y)
  t.pendown()
  t.seth(0)

如果我将 y 指定为 -50 T.MoveTo(y=-50),应该会发生什么情况,它应该保持其当前 x 位置不变,并且只更改 y 位置。 然而,发生的事情是这样的:

xcor: -100.0 ycor: 0.0
x: 0.0 y: -50

我不太清楚为什么我的 xcor() 的 -100 没有应用于变量 x。相反,它默认为 zero

(我还是新手,所以如果我问问题的方式不对,请告诉我~)

使用函数调用作为参数的默认值通常不是一个好主意,因为这些函数只被调用一次(当解释器解析你的代码时),而不是每次调用函数时。

这种情况的标准解决方案是使用None作为默认值。这里:

def MoveTo(x=None, y=None):
  if x is None: x = t.xcor()
  if y is None: y = t.ycor()
  print 'x:', x, 'y:', y
  t.penup()
  t.goto(x, y)
  t.pendown()
  t.seth(0)

所以当调用MoveTo(y=50)时,x将被替换为海龟当前的x坐标,如你所愿。