第一阶段:传统的编程方式

同学们,我们先来看一个简单的任务:计算 1 到 100 的总和

在学习函数之前,我们通常会使用 for 循环来写:

# 累加求和 1+2+...+100
total = 0
for i in range(1, 101):
    total = total + i

print("1到100的和是:", total)

第二阶段:封装成“盒子”(无参数函数)

如果我们要在程序的不同地方多次计算 1 到 100 的和,一遍遍复制粘贴上面的代码太麻烦了。

我们可以把这段代码“打包”进一个盒子里,给它起个名字,这就是函数

# 定义一个函数
def calc_sum_100():
    total = 0
    for i in range(1, 101):
        total += i
    print("1到100的和是:", total)

# 什么时候想用,就呼叫它的名字
calc_sum_100()
calc_sum_100()

第三阶段:发现不足

虽然我们打包了代码,但是这个盒子(函数)太死板了。

🧐 思考:
如果老师现在让你计算 1 到 50 的和,或者 1 到 1000 的和,怎么办?

难道我们要写很多个不同的函数吗?

def calc_sum_50(): ...
def calc_sum_100(): ...
def calc_sum_1000(): ...

这显然不够聪明!我们需要一个能“随机应变”的函数。

第四阶段:增加“参数”(更灵活的函数)

我们可以给盒子留一个“开口”,在调用函数的时候,把我们想算的数字传进去。

我们将具体的数字 101 换成变量 n

# 定义时,括号里的 n 叫“形式参数”
def calc_sum(n):
    total = 0
    # 这里不再是101,而是 n+1
    for i in range(1, n + 1):
        total += i
    print("1到" + str(n) + "的和是:", total)

# 调用时,传入的数字叫“实际参数”
calc_sum(50)
calc_sum(100)

第五阶段:函数的定义与总结

恭喜大家!你们已经掌握了函数的核心思想:封装参数

📜 函数的标准定义

def 函数名(参数1, 参数2...):
    """这里是文档注释"""
    代码块...
    return 返回值
关键词 说明
def Define的缩写,告诉Python我们要定义一个函数。
函数名 就像给变量起名一样,要见名知意。
() 参数 输入口。函数需要处理的数据从这里传进来。
: 冒号 千万别忘了!表示下面缩进的内容属于这个函数。
核心口诀:
定义函数用 def,名字后面加圆括。
参数放进圆括里,冒号之后写逻辑。
要想代码跑起来,记得下面要调用!

第六阶段:思考练习 - 进阶挑战

刚刚我们写的函数只能计算 1 到 n 的和。但是,如果老师想让你计算 50 到 100 的和,或者 任意两个整数 a 到 b 之间的和,该怎么办呢?

✍️ 试着写出你的代码:

提示:
1. 你需要几个参数?
2. range() 函数里面该怎么写?

参考答案

# 我们需要两个参数:start(开始) 和 end(结束)
def calc_range_sum(start, end):
    total = 0
    # 注意:range含头不含尾,所以后面要 +1
    for i in range(start, end + 1):
        total += i
    print(start, "到", end, "的和是:", total)

calc_range_sum(50, 100)

关键点: 函数可以定义多个参数,用逗号隔开。参数越多,函数越灵活!