第一阶段:传统的编程方式
同学们,我们先来看一个简单的任务:计算 1 到 100 的总和。
在学习函数之前,我们通常会使用 for 循环来写:
# 累加求和 1+2+...+100
total = 0
for i in range(1, 101):
total = total + i
print("1到100的和是:", total)
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()
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 的和,怎么办?
如果老师现在让你计算 1 到 50 的和,或者 1 到 1000 的和,怎么办?
难道我们要写很多个不同的函数吗?
def calc_sum_50(): ...
def calc_sum_100(): ...
def calc_sum_1000(): ...
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 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 返回值
"""这里是文档注释"""
代码块...
return 返回值
| 关键词 | 说明 |
|---|---|
def |
Define的缩写,告诉Python我们要定义一个函数。 |
函数名 |
就像给变量起名一样,要见名知意。 |
() 参数 |
输入口。函数需要处理的数据从这里传进来。 |
: 冒号 |
千万别忘了!表示下面缩进的内容属于这个函数。 |
核心口诀:
定义函数用 def,名字后面加圆括。
参数放进圆括里,冒号之后写逻辑。
要想代码跑起来,记得下面要调用!
定义函数用 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)
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)
关键点: 函数可以定义多个参数,用逗号隔开。参数越多,函数越灵活!