Appearance
函数:代码的“乐高积木”与图形工具库
课题
函数的“模块化魔法”——用Python函数打造专属图形工具库
教学时间
2课时(90分钟)
课前准备
- 教师端:电脑(Python 3.10+)、投影仪、多媒体课件(含乐高积木拼搭视频、函数结构类比图)、“函数卡片”(正面写函数名如
draw_square,背面写参数size)、学生前序课的turtle绘图代码(如重复画正方形的冗余代码)。 - 学生端:电脑(Python环境+ turtle库)、笔记本、彩色笔(标注函数结构)、“函数设计表”(记录函数名、参数、功能)。
- 教学素材:函数模板代码(提前发放)、“模块小能手”奖章、AI代码小助手(支持函数调试提示)。
一、导入活动:从“重复劳动”到“模块化思维”(15分钟)
活动1:“复制粘贴大挑战”——体验代码冗余的痛点
- 任务:用前序课学的turtle代码,画3个不同大小的正方形(边长分别为50、80、100),限时5分钟。
- 观察现象:学生需重复编写
for i in range(4): turtle.forward(50); turtle.right(90)三次,仅修改数字,过程繁琐。 - 提问引导:“如果要画10个正方形,每次都复制粘贴吗?有没有更简单的方法?”
活动2:“乐高积木拼搭”——类比函数的核心价值
- 播放乐高拼车视频:“拼10辆小车,不需要每次从头拼轮子、车身,而是用预制的轮子积木、车身积木组合——函数就像预制积木,定义一次,反复使用。”
- 展示“函数卡片”:“
draw_square就像‘正方形积木’,size是积木的‘大小参数’,需要多大就调多大,不用重复造轮子。”
二、知识点讲解:函数的定义与图形工具库搭建(35分钟)
模块1:函数是什么?——从“重复代码”到“封装逻辑”(10分钟)
- 核心概念:函数是“封装重复逻辑的代码块”,定义一次后可通过“函数名”反复调用,解决“代码冗余”问题。
- 生活类比:
- 妈妈做蛋糕的“配方”=函数(步骤固定);
- 配方中的“糖50g/80g”=参数(可调整的量);
- 按配方做蛋糕=调用函数(重复使用配方,只需改糖的量)。
- 前序代码对比:
冗余版(重复3次):python函数版(定义1次,调用3次):# 画边长50的正方形 for i in range(4): turtle.forward(50) turtle.right(90) # 画边长80的正方形(重复代码,仅改数字) for i in range(4): turtle.forward(80) turtle.right(90)pythondef draw_square(size): # 定义函数(配方) for i in range(4): turtle.forward(size) # size=参数(糖的量) turtle.right(90) draw_square(50) # 调用函数(做50g糖的蛋糕) draw_square(80) # 再次调用(做80g糖的蛋糕)
模块2:函数的“身份证”——定义格式与参数(15分钟)
函数定义“四要素”(结合“函数卡片”讲解):
def:定义函数的“关键词”(告诉Python“这是一个函数”);- 函数名:如
draw_square(见名知意,用小写+下划线,符合PEP8规范); - 参数:括号里的
size(像“变量”,调用时传入具体值,控制函数行为); - 冒号与缩进:
:后换行缩进4格,包裹函数内部逻辑(Python用缩进来区分代码块)。
pythondef 函数名(参数1, 参数2): # 格式模板 # 函数内部逻辑(缩进!) 代码1 代码2参数的作用:让函数“变灵活”。举例:
- 无参数函数:
def draw_small_square():只能画固定大小(如50),不灵活; - 有参数函数:
def draw_square(size):传入size=30画小正方形,size=100画大正方形,一函数多用。
- 无参数函数:
动手实践:教师演示定义
draw_triangle(side_length)函数(画等边三角形,每次右转120度),学生跟着敲代码:pythonimport turtle def draw_triangle(side_length): for i in range(3): # 三角形3条边 turtle.forward(side_length) turtle.right(120) # 等边三角形每个角60度,右转120度 # 调用函数画2个三角形 draw_triangle(60) turtle.penup() # 抬笔(不画线) turtle.goto(100, 0) # 移动到新位置 turtle.pendown() # 落笔 draw_triangle(80)
模块3:打造“图形工具库”——函数的复用与组合(10分钟)
- 工具库概念:把多个图形函数(正方形、三角形、圆形)放在同一个代码文件中,像“工具箱”一样随用随取。
- 组合示例:用
draw_square和draw_triangle组合成“房子”:python# 先画正方形(房子主体) draw_square(100) # 再画三角形(屋顶),移动到合适位置 turtle.penup() turtle.goto(0, 100) # 移动到正方形顶部 turtle.pendown() draw_triangle(100) # 三角形底边与正方形边长一致 - 优势总结:
- 减少重复代码(“一次定义,多次调用”);
- 便于修改(改函数内部代码,所有调用处自动生效);
- 逻辑清晰(每个函数负责一个功能,像乐高积木分工明确)。
三、练习题设计:分层任务+工具库创作(25分钟)
基础任务(全员完成):“我的第一套工具”
- 要求:定义至少2个图形函数(如
draw_circle(radius)、draw_rectangle(length, width)),每个函数必须包含参数,调用3次生成不同大小的图形。 - 示例框架(圆形函数):python
import turtle def draw_circle(radius): turtle.circle(radius) # turtle库自带画圆函数,radius=半径 # 调用3次,画不同大小的圆 draw_circle(30) turtle.penup() turtle.goto(100, 0) turtle.pendown() draw_circle(50) # 第3次调用自己设计位置和大小 ____________________
进阶任务(选做):“组合图形创作”
- 用基础任务定义的函数,组合成一个场景(如“花园”=圆形花朵+长方形花盆+三角形叶子),并在代码中用注释说明“哪个函数对应哪个部分”。
教师支持:
- 打开AI代码小助手,学生可提问“怎么让函数画彩色图形?”“参数传负数会怎样?”,AI生成带注释的参考代码(如添加
turtle.color("red")); - 发放“函数设计表”,引导学生记录:
函数名 参数 功能描述 调用示例 draw_squaresize画边长为size的正方形 draw_square(70)
四、讲解与互评:从“函数定义”到“模块化思维”(10分钟)
- 学生展示:选2组学生投屏代码,讲解:
- “你定义了哪些函数?参数有什么用?”
- “如果要改图形颜色,需要改函数内部还是调用时?”(引导理解“封装性”:改函数内部,所有调用处同步生效)。
- 互评标准:
- 函数名是否“见名知意”(如
draw_flower比a更好); - 参数是否合理(如圆形用
radius比x更清晰); - 组合图形的创意度(如是否有场景故事)。
- 函数名是否“见名知意”(如
- 颁发“模块小能手”奖章给最佳工具库设计组。
五、总结与作业(5分钟)
课堂总结:
- 函数=“预制乐高积木”,核心价值是“一次定义,多次复用”;
- 函数定义四要素:
def、函数名、参数、冒号+缩进; - 图形工具库=多个函数的组合,让代码更简洁、易维护。
课后作业:
- 完善个人“图形工具库”,新增1个带2个参数的函数(如
draw_rectangle(length, width)); - 用工具库中的函数创作“我的卧室”场景(至少包含3个不同图形),代码中注明每个函数的作用。
教学理论支撑:
- 皮亚杰形式运算阶段理论:通过“乐高积木”“蛋糕配方”等具体类比,帮助学生理解抽象的“函数封装”概念,从具体操作过渡到逻辑抽象(理解“参数控制变量”的数学逻辑)。
- 维果茨基最近发展区:提供函数模板(四要素框架)和AI代码助手作为“脚手架”,帮助学生跨越“从零散代码到结构化函数”的认知障碍,实现能力进阶。
- STEAM教育融合:结合工程(模块化设计思维,如工具库的组件化)、数学(参数化控制图形大小,如边长与面积的关系)、艺术(图形组合的创意表达),体现跨学科整合。
- 自我决定理论:通过“工具库创作”“场景设计”等开放性任务,满足学生的自主需求(选择图形类型)和能力需求(完成后获得成就感),激发内在学习动机。