Skip to content

函数:代码的“乐高积木”与图形工具库

课题

函数的“模块化魔法”——用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
    # 画边长50的正方形
    for i in range(4):
        turtle.forward(50)
        turtle.right(90)
    # 画边长80的正方形(重复代码,仅改数字)
    for i in range(4):
        turtle.forward(80)
        turtle.right(90)
    函数版(定义1次,调用3次):
    python
    def 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分钟)

  • 函数定义“四要素”(结合“函数卡片”讲解):

    1. def:定义函数的“关键词”(告诉Python“这是一个函数”);
    2. 函数名:如draw_square(见名知意,用小写+下划线,符合PEP8规范);
    3. 参数:括号里的size(像“变量”,调用时传入具体值,控制函数行为);
    4. 冒号与缩进::后换行缩进4格,包裹函数内部逻辑(Python用缩进来区分代码块)。
    python
    def 函数名(参数1, 参数2):  # 格式模板
        # 函数内部逻辑(缩进!)
        代码1
        代码2
  • 参数的作用:让函数“变灵活”。举例:

    • 无参数函数:def draw_small_square(): 只能画固定大小(如50),不灵活;
    • 有参数函数:def draw_square(size): 传入size=30画小正方形,size=100画大正方形,一函数多用。
  • 动手实践:教师演示定义draw_triangle(side_length)函数(画等边三角形,每次右转120度),学生跟着敲代码:

    python
    import 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_squaredraw_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分钟)

  1. 学生展示:选2组学生投屏代码,讲解:
    • “你定义了哪些函数?参数有什么用?”
    • “如果要改图形颜色,需要改函数内部还是调用时?”(引导理解“封装性”:改函数内部,所有调用处同步生效)。
  2. 互评标准
    • 函数名是否“见名知意”(如draw_flowera更好);
    • 参数是否合理(如圆形用radiusx更清晰);
    • 组合图形的创意度(如是否有场景故事)。
  3. 颁发“模块小能手”奖章给最佳工具库设计组。

五、总结与作业(5分钟)

课堂总结:

  • 函数=“预制乐高积木”,核心价值是“一次定义,多次复用”;
  • 函数定义四要素:def、函数名、参数、冒号+缩进;
  • 图形工具库=多个函数的组合,让代码更简洁、易维护。

课后作业:

  1. 完善个人“图形工具库”,新增1个带2个参数的函数(如draw_rectangle(length, width));
  2. 用工具库中的函数创作“我的卧室”场景(至少包含3个不同图形),代码中注明每个函数的作用。

教学理论支撑:

  1. 皮亚杰形式运算阶段理论:通过“乐高积木”“蛋糕配方”等具体类比,帮助学生理解抽象的“函数封装”概念,从具体操作过渡到逻辑抽象(理解“参数控制变量”的数学逻辑)。
  2. 维果茨基最近发展区:提供函数模板(四要素框架)和AI代码助手作为“脚手架”,帮助学生跨越“从零散代码到结构化函数”的认知障碍,实现能力进阶。
  3. STEAM教育融合:结合工程(模块化设计思维,如工具库的组件化)、数学(参数化控制图形大小,如边长与面积的关系)、艺术(图形组合的创意表达),体现跨学科整合。
  4. 自我决定理论:通过“工具库创作”“场景设计”等开放性任务,满足学生的自主需求(选择图形类型)和能力需求(完成后获得成就感),激发内在学习动机。