为什么abs()函数适用于Python中的位置坐标?
我正在看关于海龟图形的Python文档,它有一个绘制海龟星的示例。计划如下:为什么abs()函数适用于Python中的位置坐标?,python,Python,我正在看关于海龟图形的Python文档,它有一个绘制海龟星的示例。计划如下: from turtle import * color('red', 'yellow') begin_fill() while True: forward(200) left(170) if abs(pos()) < 1: break end_fill() done() 从海龟导入* 颜色(“红色”、“黄色”) 开始填充() 尽管如此: 前进(200) 左(170) 如果a
from turtle import *
color('red', 'yellow')
begin_fill()
while True:
forward(200)
left(170)
if abs(pos()) < 1:
break
end_fill()
done()
从海龟导入*
颜色(“红色”、“黄色”)
开始填充()
尽管如此:
前进(200)
左(170)
如果abs(位置())<1:
打破
(完)
完成()
我不明白为什么abs(pos())
能工作?abs()
函数接受一个参数,但是pos()
函数返回一个位置(x,y)坐标。我知道这个程序有效,只是不明白为什么。我用abs(-0.00,0.00))
在Python解释器上尝试了它,它返回错误。请帮忙 Thepos()
并没有返回具有x和y坐标的元组,而是返回类型为turtle.Vec2D
的对象,这可以通过以下方式进行验证:
>>> type(pos())
>>> turtle.Vec2D
此外,如果运行dir(pos())
,您可能会得到:
['__abs__', '__add__', ... '__class__','count', 'index', 'rotate']
因此turtle.Vec2D
对象有自己的\uuuu abs\uuuu
实现,但是通用元组没有这样的实现。pos()
返回一个元组,而不是元组。您可以通过实现\uu abs\uuu()
使abs()适用于任何类型。对于海龟,根据海龟源代码,\uu abs\uu()
返回(self[0]**2+self[1]**2)**0.5