Python 中函数(Function)是如何工作的?
随着程序越来越复杂,我们会发现:
很多代码都会反复出现。
例如:
- 多次输出欢迎信息。
- 多次计算两个数字的和。
- 多次验证用户名和密码。
如果每次都重新写一遍这些代码,不仅浪费时间,还容易出错。
因此,编程中提出了一个重要思想:
把一段经常使用的代码封装起来,需要的时候直接调用。
这种可以重复使用的代码块,就叫做函数(Function)。
什么是函数(Function)?
函数可以理解成现实生活中的一个工具。
例如:
计算器。
你输入:
3
5
计算器帮你计算:
3 + 5
最后输出:
8
整个过程可以表示为:
输入数据
│
▼
函数(Function)
│
▼
返回结果
程序中的函数也是一样:
- 接收数据
- 完成指定任务
- 返回结果(如果有)
Python 自带了很多函数
Python 已经帮我们写好了很多常用函数,这些叫做:
内置函数(Built-in Functions)
例如:
| 函数 | 作用 |
|---|---|
print() |
输出内容到终端 |
input() |
获取用户输入 |
int() |
转换为整数 |
float() |
转换为浮点数 |
str() |
转换为字符串 |
len() |
获取长度 |
type() |
查看数据类型 |
bool() |
转换为布尔值 |
这些函数可以直接使用,不需要自己编写。
print() 函数
print() 是最常见的函数。
作用:
把内容输出到终端。
例如:
print("Hello World")
输出:
Hello World
也可以一次输出多个内容:
name = "Tom"
age = 18
print(name, age)
输出:
Tom 18
input() 函数
程序不仅可以输出内容,
还可以等待用户输入数据。
这就是:
input()
例如:
name = input("请输入你的名字:")
程序运行后:
请输入你的名字:
假设用户输入:
Tom
按下 Enter 后:
变量:
name
保存的就是:
Tom
继续:
print("你好", name)
输出:
你好 Tom
注意:input() 返回的一定是字符串(str)
很多初学者都会踩这个坑。
例如:
age = input("请输入年龄:")
print(type(age))
即使输入:
18
输出仍然是:
<class 'str'>
因为:
input() 获取的永远都是字符串。
如果需要计算:
age = int(input("请输入年龄:"))
这样输入后就会自动转换成整数。
int() 函数
int() 用来:
把数据转换成整数(int)。
例如:
print(int(3.14))
输出:
3
注意:
这里不是四舍五入。
而是:
直接去掉小数部分。
还可以转换字符串:
print(int("42"))
输出:
42
也可以转换布尔值:
print(int(True))
print(int(False))
输出:
1
0
转换规则:
| 原始值 | 转换结果 |
|---|---|
True |
1 |
False |
0 |
注意: 只有内容是合法整数的字符串才能转换,例如
"42"可以,而"3.14"或"hello"使用int()都会报错。
为什么要自己写函数?
Python 自带了很多函数。
但是:
真正开发程序时,
很多功能只能自己写。
例如:
- 计算学生总分
- 判断是否登录成功
- 计算商品折扣
- 发送验证码
这些都需要:
自定义函数(User-defined Function)
使用 def 定义函数
Python 使用:
def
来定义函数。
基本语法:
def 函数名():
函数体
例如:
def hello():
print("Hello World")
这里:
def:表示开始定义函数(define 的缩写)。hello:函数名称。():函数参数的位置(目前为空)。::表示函数开始。- 缩进后的代码:函数体(Function Body)。
定义函数不会立即执行
很多初学者会疑惑:
为什么下面代码没有任何输出?
def hello():
print("Hello World")
原因是:
这里只是定义了函数。
并没有执行它。
定义函数就像:
把一本书放到书架上。
只有拿出来阅读,
它才会真正发挥作用。
调用函数(Call Function)
要运行函数,
需要:
调用(Call)
语法:
函数名()
例如:
hello()
输出:
Hello World
程序执行流程:
调用 hello()
↓
进入函数
↓
执行 print()
↓
函数结束
↓
回到原来的位置继续执行
函数可以重复使用
函数最大的优点就是:
一次编写,多次调用。
例如:
hello()
hello()
hello()
输出:
Hello World
Hello World
Hello World
相比重复写三次 print(),
代码更加整洁。
什么是参数(Parameter)?
很多函数需要处理不同的数据。
例如:
计算:
3 + 5
或者:
100 + 200
如果函数写死:
def calculate_sum():
print(3 + 5)
它永远只能计算:
3 + 5
因此:
函数可以拥有:
参数(Parameter)
参数就是:
定义函数时,用来接收外部数据的变量。
例如:
def calculate_sum(a, b):
print(a + b)
这里:
a
b
就是参数。
可以把它们理解成:
两个空盒子,
等待别人把数据放进来。
什么是实参(Argument)?
调用函数时,
真正传进去的数据,
叫:
实参(Argument)
例如:
calculate_sum(3, 1)
这里:
3
和:
1
就是实参。
程序执行时:
a ← 3
b ← 1
于是:
a + b
就变成:
3 + 1
输出:
4
参数和实参的区别
很多人容易混淆。
可以这样记:
| 名称 | 出现位置 | 作用 |
|---|---|---|
| 参数(Parameter) | 定义函数时 | 接收数据的变量 |
| 实参(Argument) | 调用函数时 | 真正传入的数据 |
例如:
def add(a, b):
print(a + b)
add(3, 5)
对应关系:
参数:
a
b
↓
实参:
3
5
参数数量必须一致
例如:
函数需要两个参数:
def add(a, b):
print(a + b)
正确调用:
add(3, 5)
如果:
add()
程序会报错:
TypeError
提示:
missing 2 required positional arguments
意思就是:
缺少两个必须提供的参数。
同样:
add(1)
也会报错。
因此:
函数需要几个参数,
调用时通常就需要传几个实参。
什么是 return?
很多初学者最容易混淆:
print()
和:
return
它们作用完全不同。
print() 只是输出
例如:
def calculate_sum(a, b):
print(a + b)
调用:
my_sum = calculate_sum(3, 1)
程序会输出:
4
但是:
print(my_sum)
输出却是:
None
为什么?
因为:
函数只是:
print()
把结果显示出来。
并没有把结果返回给外部。
函数默认返回 None
如果函数没有写:
return
Python 会自动在最后补上一句:
return None
例如:
def hello():
print("Hello")
实际上可以理解成:
def hello():
print("Hello")
return None
因此:
result = hello()
print(result)
输出:
Hello
None
使用 return 返回结果
如果希望:
函数计算完成后,
把结果交给外部继续使用,
就应该使用:
return
例如:
def calculate_sum(a, b):
return a + b
调用:
my_sum = calculate_sum(3, 1)
print(my_sum)
输出:
4
执行流程:
calculate_sum()
↓
计算:
3 + 1
↓
return 4
↓
my_sum = 4
print() 和 return 的区别
这是函数章节最重要的知识点之一。
| print() | return |
|---|---|
| 输出内容到屏幕 | 返回结果给调用者 |
| 用于显示信息 | 用于传递数据 |
| 不会结束函数 | 执行后函数立即结束 |
返回值仍然是 None |
可以返回任何类型的数据 |
例如:
def add(a, b):
return a + b
print(add(3, 5))
执行过程:
add()
↓
return 8
↓
print()
↓
终端显示:
8
return 会立即结束函数
例如:
def demo():
print("第一句")
return
print("第二句")
调用:
demo()
输出:
第一句
因为:
执行到:
return
函数立即结束。
后面的代码不会再执行。
常见错误
❌ 定义函数后忘记调用
错误:
def hello():
print("Hello")
程序不会输出任何内容。
因为:
函数只是定义了,
没有执行。
需要:
hello()
❌ 把 print() 当作返回值
错误:
def add(a, b):
print(a + b)
result = add(1, 2)
print(result)
输出:
3
None
正确写法:
def add(a, b):
return a + b
❌ 参数数量不一致
例如:
def add(a, b):
return a + b
add(1)
程序会报:
TypeError
因为:
缺少参数。
函数知识速查表
| 概念 | 说明 |
|---|---|
| 函数(Function) | 一段可以重复使用的代码。 |
| 内置函数 | Python 自带的函数,如 print()、input()。 |
| 自定义函数 | 使用 def 自己定义的函数。 |
| 参数(Parameter) | 定义函数时接收数据的变量。 |
| 实参(Argument) | 调用函数时传入的实际数据。 |
| 调用函数 | 使用 函数名() 执行函数。 |
| 返回值(Return Value) | 函数执行结束后交给调用者的数据。 |
学习小结
| 知识点 | 说明 |
|---|---|
def |
定义函数。 |
| 函数调用 | 使用 函数名() 执行函数。 |
| 参数 | 定义函数时接收数据。 |
| 实参 | 调用函数时传入的数据。 |
return |
返回计算结果,并结束函数。 |
print() |
输出内容,不负责返回数据。 |
| 默认返回值 | 没有 return 时,函数默认返回 None。 |
总结
- 函数(Function)是一段可以重复使用的代码,它能够把特定功能封装起来,提高代码的复用性和可维护性。
- Python 提供了丰富的内置函数,也支持使用
def定义自己的函数。 - 函数可以通过参数接收外部数据,通过实参传入不同的值,实现灵活复用。
return用于将结果返回给调用者,而print()只是把内容显示到终端,两者作用不同,是学习函数时必须掌握的重要知识点。