[Python 中的函数]是一种方便的方式,可以将几行代码打包成一个可以调用的简单关键字。当关键词被调用时,函数中包含的所有代码都会运行。在涵盖循环和 Turtle 的教程中,我们用一个循环来画一个正方形。现在,我们可以把所有的逻辑放到一个简单的draw_square()函数中,任何时候我们想画一个正方形,只需调用draw_square()函数。现在让我们来建立这个函数。
定义一个函数
要创建你自己的函数,首先要给它一个名字。这个名字可以是你想要的任何东西,只要它不是一个 Python 关键字。函数的名字应该是对该函数所做工作的描述。这样,当你想调用它们时,你就可以记住它们的用途。让我们把我们的函数叫做 draw_square() ,因为这正是它的作用。
from turtle import *
drawing_area = Screen()
drawing_area.setup(width=750, height=500)
shape('arrow')
def draw_square():
for i in range(4):
forward(100)
right(90)
要调用这个函数,你只需要在函数的名字后面写上括号(),就像这样:
from turtle import *
drawing_area = Screen()
drawing_area.setup(width=750, height=500)
shape('arrow')
def draw_square():
for i in range(4):
forward(100)
right(90)
draw_square()
done()
调用draw_square()函数将触发函数定义中的代码,使画布上画出一个正方形。
多次调用函数
现在有了一个画正方形的函数,我们可以在任何时候想画正方形时,轻松地反复调用这个函数。在下面的程序中,我们使用draw_square()函数和Turtle中的其他一些函数,在同一程序中在画布上画了3个正方形。请注意,每次调用 draw_square() 函数,都会在画布上画出一个正方形。
from turtle import *
drawing_area = Screen()
drawing_area.setup(width=750, height=500)
shape('arrow')
def draw_square():
for i in range(4):
forward(100)
right(90)
right(-90)
penup()
forward(50)
right(-90)
forward(200)
pendown()
draw_square()
right(180)
penup()
forward(100)
right(-90)
pendown()
draw_square()
right(90)
penup()
forward(200)
right(-90)
pendown()
draw_square()
done()
penup() 和 pendown()
你可能已经注意到上面的程序中有一些新的函数。这些是Turtle中的penup()和pendown()函数。它们的作用和听起来一样。当你想在不画线的情况下移动乌龟时,你可以调用penup()函数,将绘图工具从画布上移开。当你想继续绘图时,你需要调用pendown()函数,这样乌龟就会在移动时再次留下线条。下面是同一个程序,没有调用penup()或pendown()。请注意现在所有的方块都连接起来了。
一个八边形函数
让我们再创建一个函数,为我们绘制一个八角形。

from turtle import *
drawing_area = Screen()
drawing_area.setup(width=750, height=500)
shape('arrow')
def draw_square():
for i in range(4):
forward(100)
right(90)
def draw_octagon():
for i in range(8):
forward(50)
right(45)
draw_octagon()
done()
在循环中调用函数
通过将函数调用放在一个循环内,你可以多次调用一个函数来产生一些有趣的结果。让我们看一些实际的例子。
from turtle import *
drawing_area = Screen()
drawing_area.setup(width=750, height=500)
shape('arrow')
def draw_square():
for i in range(4):
forward(100)
right(90)
def draw_octagon():
for i in range(8):
forward(50)
right(45)
for i in range(20):
draw_square()
right(-30)
draw_octagon()
done()