Python 编程:从零基础到精通
第 10 课 - 函数定义与调用
所属模块: 模块三:函数
难度: beginner
标签: functions, def, parameters
上一课: 列表、字典与集合推导式
下一课: 函数参数(位置、关键字、默认值)
1. 学习目标
完成本课学习后,你将能够:
- 理解什么是函数以及为什么需要使用函数。
- 使用
def关键字正确地定义一个函数。 - 正确地调用已定义的函数。
- 理解函数参数(形参和实参)的基本概念,并为函数传递参数。
- 理解函数返回值
return的作用。
2. 核心概念
想象一下,你经常需要向不同的人问好:"你好,张三!", "你好,李四!"。每次都要写print("你好,XX!")会很麻烦。函数就像一个"代码盒子",你把执行某个任务的代码放进去,给这个盒子起个名字。以后需要完成这个任务时,只需要喊出这个名字(调用函数),盒子里的代码就会自动运行,还可以向盒子里传递不同的信息(参数)。
- 函数定义: 使用
def关键字来"创建"这个盒子。def 函数名(参数列表): 函数体(代码块) - 函数调用: 写出函数的名字,后面跟上括号
(),来"启动"这个盒子。函数名(参数值) - 参数(形参与实参):
- 形参: 定义函数时,在括号里写的变量名,相当于盒子内部预留的"插槽"。
- 实参: 调用函数时,传递给函数的具体数据,相当于插入"插槽"的"插头"。
- 返回值: 函数可以用
return语句把一个结果"送出来"。如果没有return,函数默认返回None。
3. 代码示例
示例1:定义并调用一个最简单的函数
# 定义一个名为 greet 的函数,没有参数
def greet():
print("你好!欢迎学习Python函数。")
# 调用函数 greet
greet()
输出:
你好!欢迎学习Python函数。
示例2:带参数的函数
# 定义一个函数,有一个参数 name(形参)
def greet_by_name(name):
print(f"你好,{name}!")
# 调用函数,并传递实参 "小明"
greet_by_name("小明")
# 再次调用,传递不同的实参
greet_by_name("小红")
输出:
你好,小明!
你好,小红!
示例3:带返回值的函数
# 定义一个函数,计算两个数的和,并返回结果
def add_numbers(a, b):
sum_result = a + b
return sum_result # 将计算结果返回给调用者
# 调用函数,并将返回的结果赋值给变量 `total`
total = add_numbers(3, 5)
print(f"3 + 5 的结果是:{total}")
# 也可以直接在 print 语句中调用函数
print(f"10 + 20 的结果是:{add_numbers(10, 20)}")
输出:
3 + 5 的结果是:8
10 + 20 的结果是:30
4. 实践练习
练习1(简单):
定义一个名为 print_line 的函数,它不接收任何参数。函数的功能是打印一行由20个短横线 "-" 组成的字符串。然后,调用这个函数两次。
练习2(中等):
定义一个名为 calculate_area 的函数,它接收两个参数:length(长)和 width(宽)。函数的功能是计算并返回长方形的面积(面积 = 长 * 宽)。使用这个函数计算一个长为7、宽为4的长方形的面积,并打印结果。
练习3(挑战):
编写一个函数 is_adult,它接收一个参数 age(年龄)。函数的功能是:
- 如果年龄大于或等于18,则返回字符串
"成年人"。 - 否则,返回字符串
"未成年"。 调用这个函数,并传入年龄25和15,将结果打印出来。
5. 常见错误
-
忘记函数定义末尾的冒号
:# 错误 def my_func() print("Hello") # 正确 def my_func(): print("Hello") -
函数体没有正确缩进
# 错误 - 代码没有缩进,不属于函数体 def my_func(): print("Hello") # 正确 - 函数体必须缩进(通常用4个空格) def my_func(): print("Hello") -
在定义函数之前就调用它
# 错误 - 调用 `my_func` 时,函数还未被定义 my_func() def my_func(): print("Hello") # 正确 - 先定义,后调用 def my_func(): print("Hello") my_func() -
混淆
print和return# 错误示范:想用函数返回一个值,但用了 print def bad_add(a, b): print(a + b) # 只是打印,没有返回值,调用者拿不到结果 result = bad_add(1, 2) # result 的值是 None,而不是 3 print(result) # 输出 None # 正确做法:使用 return def good_add(a, b): return a + b # 将结果返回 result = good_add(1, 2) # result 的值是 3 print(result) # 输出 3
6. 小结
- 函数是什么? 一个封装了可重用代码块的工具,通过名字(函数名)来调用。
- 如何定义? 使用
def关键字,后面跟函数名、括号和冒号,函数体需要缩进。 - 参数: 在定义时(形参)占位,在调用时(实参)传入具体数据,实现函数的灵活通用。
- 返回值: 使用
return关键字将函数内部的计算结果传递出来,供后续使用。一个函数可以没有return,也可以有多个return(但通常只会执行第一个)。 - 核心步骤: 先定义,后调用。没有定义的函数无法调用;定义了不调用,函数就不会执行。
掌握了函数的基本定义与调用,我们就迈出了代码结构化、模块化的第一步。在下一课,我们将深入学习函数参数的不同类型,让函数变得更加强大和易用!
练习编辑器
python
Loading...