GEEK
← 返回首页

Python 中函数(Function)是如何工作的?

#随笔

函数(Function)是一段可以重复使用的代码,用于完成某项特定任务。Python 提供了许多内置函数(如 print()、input()、int()),也允许开发者使用 def 创建自定义函数。函数可以接收参数(Parameter),调用时传入实参(Argument),并通过 return 返回计算结果。合理使用函数可以减少重复代码,让程序更清晰、更易维护。

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() 只是把内容显示到终端,两者作用不同,是学习函数时必须掌握的重要知识点。