您的位置:首页 > 编程语言 > Python开发

Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 5. 参数

2017-12-04 12:43 1001 查看
上一个教程中,咪博士带大家学习了函数的使用。例如,line_without_moving 函数,可以让海龟先画出一条线段,然后再回来起点。

1 def line_without_moving():
2     turtle.forward(100)
3     turtle.backward(100)


但是,这个函数还是有一些局限性的。譬如,海龟所画线段的长度是固定的,这样就显得不够灵活。那么有什么办法,让函数变得更灵活一些呢?答案就是使用参数。

1 def line_without_moving(length):
2     turtle.forward(length)
3     turtle.backward(length)


对比前后 2 段代码,新版的 line_without_moving 在函数声明的地方(第 1 行),在小括号里面写上了 length;又将函数体中(第 2, 3 行)的数字 100 替换成 length。这里的 length 就称为函数的参数,我们在函数调用时,可以向函数参数传递不同的值,这样函数体中用到 length 参数的地方,也就间接地用到我们提供的值啦。

1 import turtle
2
3
4 def line_without_moving(length):
5     turtle.forward(length)
6     turtle.backward(length)
7
8
9 line_without_moving(100)
10 turtle.right(90)
11 line_without_moving(150)
12 turtle.right(90)
13 line_without_moving(200)
14 turtle.right(90)
15 line_without_moving(250)
16
17
18 turtle.exitonclick()


运行上面这段画十字型的代码,我们看到构成十字型的 4 条线段长短不一。这是因为我们在调用 line_without_moving 函数时,使用了不同的参数(第 9, 11, 13, 15 行)。



关于函数参数,咪博士要提醒大家的是,函数参数只能在本函数内部(即本函数体中)使用。函数之外,函数参数就无效了。例如,函数 line_without_moving 的参数 length 就只能在 line_without_moving 函数中使用,你不能在其他的地方使用它。

还记得上个教程中,咪博士给大家留的那个画蜂巢的作业吗?聪明的你,是不是已经画出来了呢?

下面是咪博士的代码,代大家参考。

1 import turtle
2
3 def hexagon():
4   for i in range(6):
5       turtle.forward(50)
6       turtle.left(60)
7
8 def honeycomb():
9     for i in range (6):
10         hexagon()
11         turtle.forward(50)
12         turtle.right(60)
13
14 honeycomb()
15
16 turtle.exitonclick()


现在,蜂巢的大小的固定的。使用这节课的知识,通过函数参数,我们可以很方便地控制蜂巢的大小。

下面是咪博士改进后的代码。通过参数 size,我们可以自由地控制蜂巢的大小。

1 import turtle
2
3 def hexagon(size):
4   for i in range(6):
5       turtle.forward(size)
6       turtle.left(60)
7
8 def honeycomb(size):
9     for i in range (6):
10         hexagon(size)
11         turtle.forward(size)
12         turtle.right(60)
13
14 honeycomb(80)
15
16 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 用于控制正多边的边长(大小)

1 def draw_polygon(sides, length):
2     pass


原文链接:http://www.ipaomi.com/2017/11/22/python-零基础-快速入门-趣味教程-咪博士-海龟绘图-turtle-5-参/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐