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坐标,如你所愿。
所以我在摆弄 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坐标,如你所愿。