在Python 3.7之后的文档中,对于Python Turtle end_fill()函数的描述,加了一段话,如下:
Whether or not overlap regions for self-intersecting polygons or multiple shapes are filled depends on the operating system graphics, type of overlap, and number of overlaps. For example, the Turtle star above may be either all yellow or have some white regions.
简单来说,就是对于turtle中的填充功能,其填充效果跟操作系统中的图形库以及填充块相互重叠的类型、重叠的数量相关。比如,文档中给的一个例子:
from turtle import *
color('red', 'yellow')
begin_fill()
while True:
forward(200)
left(170)
if abs(pos()) < 1:
break
end_fill()
done()
其给出的运行效果如下图所示:
如果你使用的是Windows操作系统,你可能会得到不同的填充效果,如下所示:
仔细观察对比可以知道,前者在中间有一圈未填充黄色,而后者全部填充上了黄色。在Mac OS上运行Python可以得到前者的效果。
从文档和实际的运行结果可以看出来,在Python turtle中,其填充操作跟操作系统是相关的,可能会随着操作系统的不同而不同。为了符合更多的用户实际情况(使用Winows的用户占多数),以及减少老师们上课的困扰,我们将平台上的小海龟填充以兼容windows的方式呈现,建议有条件的老师在授课中跟学生解释一下不同平台下可能会出现不同的执行效果,以免使用Mac操作系统的学生在使用本机Python环境时产生困扰。
关于两种填充方式的具体原理,有兴趣的老师可以参考这篇文章进一步了解。