上一个教程中,咪博士带大家学习了函数的使用。例如,line_without_moving 函数,可以让海龟先画出一条线段,然后再回来起点。
def line_without_moving():
turtle.forward(100)
turtle.backward(100)
但是,这个函数还是有一些局限性的。譬如,海龟所画线段的长度是固定的,这样就显得不够灵活。那么有什么办法,让函数变得更灵活一些呢?答案就是使用参数。
def line_without_moving(length):
turtle.forward(length)
turtle.backward(length)
对比前后 2 段代码,新版的 line_without_moving 在函数声明的地方(第 1 行),在小括号里面写上了 length;又将函数体中(第 2, 3 行)的数字 100 替换成 length。这里的 length 就称为函数的参数,我们在函数调用时,可以向函数参数传递不同的值,这样函数体中用到 length 参数的地方,也就间接地用到我们提供的值啦。
import turtle
def line_without_moving(length):
turtle.forward(length)
turtle.backward(length)
line_without_moving(100)
turtle.right(90)
line_without_moving(150)
turtle.right(90)
line_without_moving(200)
turtle.right(90)
line_without_moving(250)
turtle.exitonclick()
运行上面这段画十字型的代码,我们看到构成十字型的 4 条线段长短不一。这是因为我们在调用 line_without_moving 函数时,使用了不同的参数(第 9, 11, 13, 15 行)。
关于函数参数,咪博士要提醒大家的是,函数参数只能在本函数内部(即本函数体中)使用。函数之外,函数参数就无效了。例如,函数 line_without_moving 的参数 length 就只能在 line_without_moving 函数中使用,你不能在其他的地方使用它。
还记得上个教程中,咪博士给大家留的那个画蜂巢的作业吗?聪明的你,是不是已经画出来了呢?
下面是咪博士的代码,代大家参考。
import turtle
def hexagon():
for i in range(6):
turtle.forward(50)
turtle.left(60)
def honeycomb():
for i in range (6):
hexagon()
turtle.forward(50)
turtle.right(60)
honeycomb()
turtle.exitonclick()
现在,蜂巢的大小的固定的。使用这节课的知识,通过函数参数,我们可以很方便地控制蜂巢的大小。
下面是咪博士改进后的代码。通过参数 size,我们可以自由地控制蜂巢的大小。
import turtle
def hexagon(size):
for i in range(6):
turtle.forward(size)
turtle.left(60)
def honeycomb(size):
for i in range (6):
hexagon(size)
turtle.forward(size)
turtle.right(60)
honeycomb(80)
turtle.exitonclick()
这里我们将六边形的边长(参数 size)设置为 80,让蜂巢变得更大一些。
参数的传递过程如下:
- 第 14 行,我们在调用函数 honeycomb 时,将 80 传递给了 honeycomb 的参数 size
- 函数 honeycomb 接受了 80 这个参数值(第 8 行),因此函数 honeycomb 中,所有使用到参数 size 的地方(第 10, 11 行),都得到了 80 这个值
- 函数 honeycomb 中,又将 80 这个值传递给被调用的函数,第 10 传递给函数 hexagon, 第 11 行传递给函数 turtle.forward
- 函数 hexagon 接受了 80 个参数值(第 3 行),因此函数 hexagon 中,所有使用到参数 size 的地方(第 5 行),都得到了 80 这个值
- ……
这里,咪博士要提醒大家的是:函数 hexagon 和 honeycomb 中都有参数 size,这 2 个 size 虽然同名,而且在参数传递的过程中,都被赋予相同的值(80),但它们不是同一个参数!hexagon 中的参数 size,其作用域(即有效范围)是第 3-6 行;honeycomb 中的参数 size,其作用域是第 8-12 行。
【练习】
尝试编写一个带参数的函数,实现任意正多边形的绘制
【提示】
- 设计一个名为 draw_polygon 的函数来绘制任意正多边形
- draw_polygon 接受 2 个参数 sides 和 length(多个参数之间用英文逗号分隔)
- sides 用于控制正多边形的边数(内角)
- length 用于控制正多边的边长(大小)
def draw_polygon(sides, length):
pass
原文链接:http://www.ipaomi.com/2017/11/22/python-零基础-快速入门-趣味教程-咪博士-海龟绘图-turtle-5-参/