Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么abs()函数适用于Python中的位置坐标?_Python - Fatal编程技术网

为什么abs()函数适用于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

我正在看关于海龟图形的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)
如果abs(位置())<1:
打破
(完)
完成()
我不明白为什么
abs(pos())
能工作?
abs()
函数接受一个参数,但是
pos()
函数返回一个位置(x,y)坐标。我知道这个程序有效,只是不明白为什么。我用
abs(-0.00,0.00))
在Python解释器上尝试了它,它返回错误。请帮忙

The
pos()
并没有返回具有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