Python 函数与数据容器详解:从入门到实战
2026/7/20 15:44:20 网站建设 项目流程

📢 大家好,今天我们来详细讲解 Python 中最重要的两个核心概念:函数数据容器。无论你是刚入门的新手,还是想巩固基础的老手,这篇文章都能帮你系统地掌握这些知识点。


📚 目录

  • 一、函数(Function)

    • 1.1 什么是函数

    • 1.2 函数的定义和调用

    • 1.3 函数的参数

    • 1.4 函数的返回值

    • 1.5 None 类型

  • 二、数据容器(Data Container)

    • 2.1 字符串(str)

    • 2.2 列表(list)

  • 三、实战练习

  • 四、总结


一、函数(Function)

1.1 什么是函数

在 Python 中,函数就是将一段具有特定功能的代码组织在一起,并给它起一个名字的代码块。你可以通过这个名字来调用它,从而执行那段代码。

简单理解:函数就是“装代码的盒子”,你把需要重复使用的逻辑装进去,需要用的时候直接喊名字即可。

为什么要学习、使用函数呢?
  • 为了得到一个针对特定需求、可供重复利用的代码段

  • 提高程序的复用性,减少重复性代码,提高开发效率

python

# 没有使用函数:重复代码 print("计算 1 + 2 =", 1 + 2) print("计算 3 + 4 =", 3 + 4) print("计算 5 + 6 =", 5 + 6) # 使用函数:封装复用 def add(a, b): return a + b print("计算 1 + 2 =", add(1, 2)) print("计算 3 + 4 =", add(3, 4)) print("计算 5 + 6 =", add(5, 6))

1.2 函数的定义和调用

基本语法

python

def 函数名(传入参数): 函数体 return 返回值
调用语法

python

变量 = 函数名(参数)
⚠️ 注意事项
  • 参数如不需要,可以省略

  • 返回值如不需要,可以省略

  • 函数必须先定义后使用(Python 没有函数声明)

python

# 正确 ✅ def say_hello(): print("Hello World!") say_hello() # 调用 # 错误 ❌ say_goodbye() # NameError: name 'say_goodbye' is not defined def say_goodbye(): print("Goodbye!")
📝 函数小练习

练习1:封装一个函数,计算两个数的和

python

def add(a, b): return a + b result = add(10, 20) print(f"10 + 20 = {result}") # 输出: 10 + 20 = 30

练习2:封装一个函数,计算 1-100 之间的累加和

python

def sum_1_to_100(): total = 0 for i in range(1, 101): total += i return total print(f"1 到 100 的累加和为:{sum_1_to_100()}") # 输出: 5050

1.3 函数的参数

在函数进行计算时,可以接受外部(调用时)提供的数据,这就是参数。

python

def add(x, y): # x 和 y 是形式参数(形参) return x + y result = add(5, 6) # 5 和 6 是实际参数(实参) print(result) # 输出: 11
形参与实参
  • 形式参数(形参):函数定义中提供的参数,表示函数声明将要使用这个参数

  • 实际参数(实参):函数调用中提供的参数,表示函数执行时真正使用的参数值

参数之间使用逗号进行分隔,传入时按照顺序传入数据。


1.4 函数的返回值

所谓"返回值",就是程序中函数完成事情后,最后给调用者的结果

python

def add(a, b): return a + b # return 关键字返回结果 result = add(3, 5) # 变量 result 接收返回值 print(result) # 输出: 8
⚠️ 注意

函数体在遇到return后就结束了,所以写在return后的代码不会执行。

python

def test(): print("第一行") return 100 print("第二行") # 这行代码永远不会执行 print(test()) # 输出: 第一行 \n 100

1.5 None 类型

Python 中有一个特殊的字面量:None,其类型是<class 'NoneType'>

无返回值的函数,实际上就是返回了None这个字面量。

None表示:空的、无实际意义的意思。函数返回的None,就表示这个函数没有返回什么有意义的内容,也就是返回了空的意思。

python

def say_hello(): print("Hello....") result = say_hello() # 使用变量接收返回值 print(result) # 输出: None print(type(result)) # 输出: <class 'NoneType'>
💡 小知识

Python 中print()函数的返回值也是None

python

result = print("Hello") print(result) # 输出: None

二、数据容器(Data Container)

数据容器,在 Python 中就是指用来批量存储和管理数据的"盒子"或"容器"。你可以把它们理解为专门存放数据的"收纳工具"。

生活中,你有衣柜(装衣服)、书架(装书)、冰箱(装食物)。编程中,你需要列表(装一组数据)、字典(装带标签的数据)等。

为什么学习数据容器?

思考一个问题:如果我想要在程序中,记录 5 名学生的信息,如姓名。

python

# ❌ 不高级且低效:定义 5 个变量 name1 = "王丽红" name2 = "周杰轮" name3 = "林俊节" name4 = "张学油" name5 = "刘德滑" # ✅ 优雅且高效:一个变量搞定 name_list = ['王丽红', '周杰轮', '林俊节', '张学油', '刘德滑'] print(name_list) # 输出: ['王丽红', '周杰轮', '林俊节', '张学油', '刘德滑']

这就是数据容器——一个容器可以容纳多份数据。学习数据容器,就是为了批量存储或批量使用多份数据。

Python 中的数据容器

Python 中主要的数据容器包括:

容器类型特点是否可变是否有序
字符串(str)字符的容器❌ 不可变✅ 有序
列表(list)最灵活的容器✅ 可变✅ 有序
元组(tuple)不可变的列表❌ 不可变✅ 有序
集合(set)去重、无序✅ 可变❌ 无序
字典(dict)键值对存储✅ 可变✅ 有序(3.7+)

容纳的每一份数据称之为元素,存储可以是任意类型的数据,如字符串、数字、布尔等。


2.1 字符串(str)

尽管字符串看起来并不像列表、元组那样,一看就是存放了许多数据的容器。但不可否认的是,字符串同样也是数据容器的一员

字符串是字符的容器,一个字符串可以存放任意数量的字符。如字符串 "ITHEIMA" 存放了 6 个字符。

2.1.1 字符串的下标(索引)

和其它容器如列表、元组一样,字符串也可以通过下标(索引)进行访问。

python

name = "ITHEIMA" # 从前向后,下标从 0 开始 print(name[0]) # 输出: I print(name[2]) # 输出: H # 从后向前,下标从 -1 开始 print(name[-1]) # 输出: A print(name[-3]) # 输出: I
⚠️ 注意

字符串是一个无法修改的数据容器,同元组一样。

python

name = "ITHEIMA" # name[0] = "A" # ❌ TypeError: 'str' object does not support item assignment
2.1.2 字符串的常用操作
① 查找特定字符串的下标索引值

python

my_str = "ITCAST ITHEIMA AND" print(my_str.index("AND")) # 输出: 13(查找 "AND" 的起始位置)
② 统计字符串中某字符串的出现次数

python

my_str = "ITCAST ITHEIMA AND" print(my_str.count("IT")) # 输出: 2
③ 统计字符串的长度

python

my_str = "温州程序员1234!@#$" print(len(my_str)) # 输出: 13

📌注意:数字、字母、符号、中文均算作 1 个字符。

编号操作说明
1字符串[下标]根据下标索引取出特定位置字符
2字符串.index(字符串)查找给定字符的第一个匹配项的下标
3字符串.count(字符串)统计字符串内某字符串的出现次数
4len(字符串)统计字符串的字符个数
2.1.3 字符串的特有操作
① 字符串的替换replace()

python

name = "ITCAST ITHEIMA" new_name = name.replace("IT", "AI") print(new_name) # 输出: AICAST AIHEIMA print(name) # 输出: ITCAST ITHEIMA(原字符串不变)

⚠️注意replace()不会修改原字符串本身,而是得到一个新字符串。

② 字符串的分割split()

python

name = "清华大学 交通大学 温州程序员 牛津大学" name_list = name.split(" ") # 按照空格分割 print(name_list) # 输出: ['清华大学', '交通大学', '温州程序员', '牛津大学'] print(type(name_list)) # 输出: <class 'list'>

⚠️注意split()不会修改原字符串,而是得到一个新的列表对象。

③ 字符串的规整操作strip()

去除首尾空格:

python

my_str = " ITCAST ITHEIMA AND " print(my_str.strip()) # 输出: "ITCAST ITHEIMA AND"

去除首尾指定字符串:

python

my_str = "12ITHEIMA AND ITCAST21" print(my_str.strip("12")) # 输出: "ITHEIMA AND ITCAST"

⚠️注意:传入的是"12",其实就是"1""2"都会移除,是按照单个字符移除的。

编号操作说明
1字符串.replace(字符串1, 字符串2)将字符串内的全部字符串1替换为字符串2,不修改原字符串
2字符串.split(分隔符字符串)按照给定字符串对原字符串进行分隔,得到一个新列表
3字符串.strip()移除首尾的空格和换行符
4字符串.strip(字符串)移除首尾的指定字符串
2.1.4 字符串的遍历

同列表、元组一样,字符串也支持while循环和for循环进行遍历。

python

my_str = "温州程序员" # while 循环遍历 index = 0 while index < len(my_str): print(my_str[index]) index += 1 # for 循环遍历 for char in my_str: print(char)
✅ 字符串的特点总结
特点说明
存储类型✅ 只可以存储字符串(字符)
长度✅ 任意(取决于内存大小)
下标索引✅ 支持
重复元素✅ 允许重复字符串存在
可修改❌ 不可以修改(增加或删除元素等)
循环✅ 支持 for 循环和 while 循环

2.2 列表(list)

列表(list)是 Python 中最常用、最灵活的一种数据容器。简单来说,列表就是一个"有序的、可变的、可以存放任意类型数据"的大口袋

你可以把列表想象成一个购物车:你可以往里面放任何东西(数字、文字、甚至其他购物车),可以随时加东西、拿走东西,或者把里面的某个东西换成别的,而且里面的东西是按你放的顺序排列的。

2.2.1 列表的定义

基本语法:

python

# 字面量 [元素1, 元素2, 元素3, 元素4, ...] # 定义变量 变量名称 = [元素1, 元素2, 元素3, 元素4, ...] # 定义空列表 变量名称 = [] 变量名称 = list()

特点:

  • 列表内的每一个数据,称之为元素

  • []作为标识

  • 列表内每一个元素之间用逗号,隔开

  • 列表可以一次存储多个数据,且可以为不同的数据类型,支持嵌套

python

# 基础列表 name_list = ['ITHEIMA', 'ITCAST', 'PYTHON'] print(name_list) # 输出: ['ITHEIMA', 'ITCAST', 'PYTHON'] print(type(name_list)) # 输出: <class 'list'> # 不同类型混装 my_list = ['ITHEIMA', 666, True] print(my_list) # 输出: ['ITHEIMA', 666, True] # 嵌套列表 my_list = [[1, 2, 3], [4, 5, 6]] print(my_list) # 输出: [[1, 2, 3], [4, 5, 6]]
2.2.2 列表的下标(索引)

如何从列表中取出特定位置的数据呢?我们可以使用下标索引

python

name_list = ['TOM', 'LILY', 'ROSE'] # 正向索引(从 0 开始) print(name_list[0]) # 输出: TOM print(name_list[1]) # 输出: LILY print(name_list[2]) # 输出: ROSE # 反向索引(从 -1 开始) print(name_list[-1]) # 输出: ROSE print(name_list[-2]) # 输出: LILY print(name_list[-3]) # 输出: TOM
2.2.3 嵌套列表的下标(索引)

如果列表是嵌套的列表,同样支持下标索引。

python

# 2层嵌套列表 my_list = [[1, 2, 3], [4, 5, 6]] # 获取内层第一个列表 print(my_list[0]) # 输出: [1, 2, 3] # 获取内层第一个列表的第一个元素 print(my_list[0][0]) # 输出: 1
2.2.4 列表的常用操作(方法)
① 查找某元素的下标index()

python

my_list = ["ITHEIMA", "ITCAST", "PYTHON"] print(my_list.index("ITCAST")) # 输出: 1 # 如果找不到,报错 ValueError
② 修改特定位置的元素值

python

my_list = [1, 2, 3] my_list[0] = 5 print(my_list) # 输出: [5, 2, 3] # 也支持反向索引 my_list[-3] = 10 print(my_list) # 输出: [10, 2, 3]
③ 插入元素insert()

python

my_list = [1, 2, 3] my_list.insert(1, "ITHEIMA") # 在下标 1 处插入元素 print(my_list) # 输出: [1, 'ITHEIMA', 2, 3]
④ 追加元素append()

python

my_list = [1, 2, 3] my_list.append(4) print(my_list) # 输出: [1, 2, 3, 4] # 追加列表(作为整体添加) my_list.append([5, 6]) print(my_list) # 输出: [1, 2, 3, 4, [5, 6]]
⑤ 追加元素方式2extend()

python

my_list = [1, 2, 3] my_list.extend([4, 5, 6]) # 将列表内容拆开依次追加 print(my_list) # 输出: [1, 2, 3, 4, 5, 6]
⑥ 删除元素del/pop()

python

my_list = [1, 2, 3] # 方式1:del 语句 del my_list[0] print(my_list) # 输出: [2, 3] # 方式2:pop() 方法 my_list = [1, 2, 3] my_list.pop(0) print(my_list) # 输出: [2, 3]
⑦ 删除指定元素remove()

python

my_list = [1, 2, 3, 2, 3] my_list.remove(2) # 从前向后,删除此元素第一个匹配项 print(my_list) # 输出: [1, 3, 2, 3]
⑧ 清空列表clear()

python

my_list = [1, 2, 3] my_list.clear() print(my_list) # 输出: []
⑨ 统计某元素在列表内的数量count()

python

my_list = [1, 1, 1, 2, 3] print(my_list.count(1)) # 输出: 3
⑩ 统计列表内有多少元素len()

python

my_list = [1, 2, 3, 4, 5] print(len(my_list)) # 输出: 5
📊 列表常用操作总览
编号操作作用
1列表.append(元素)向列表中追加一个元素
2列表.extend(容器)将数据容器的内容依次取出,追加到表尾部
3列表.insert(下标, 元素)在指定下标处插入指定的元素
4del 列表[下标]删除列表指定下标元素
5列表.pop(下标)删除列表指定下标元素
6列表.remove(元素)从前向后,删除此元素第一个匹配项
7列表.clear()清空列表
8列表.count(元素)统计此元素在列表中出现的次数
9列表.index(元素)查找指定元素在列表的下标,找不到报错 ValueError
10len(列表)统计容器内有多少元素

💡提示:功能方法非常多,不需要硬记下来。除了经常用的,大多数是记忆不下来的。我们要做的是,有一个模糊印象,知晓有这样的用法即可。需要的时候,随时查阅资料即可。

2.2.5 列表的遍历
while 循环遍历

python

my_list = [1, 2, 3, 4, 5] index = 0 while index < len(my_list): print(my_list[index]) index += 1
for 循环遍历

python

my_list = [1, 2, 3, 4, 5] for i in my_list: print(i)
✅ 列表的特点总结
特点说明
元素数量✅ 可以容纳多个元素
元素类型✅ 可以容纳不同类型的元素(混装)
数据顺序✅ 数据是有序存储的(有下标序号)
重复元素✅ 允许重复数据存在
可修改✅ 可以修改(增加或删除元素等)
循环✅ 支持 for 循环和 while 循环

三、实战练习

练习1:随机抽选

列表里面包含 4 个数据:'迪丽热巴','古力娜扎','佟丽丫丫','玛尔扎哈',随机抽出一个控制台打印。

python

import random names = ['迪丽热巴', '古力娜扎', '佟丽丫丫', '玛尔扎哈'] random_name = random.choice(names) # 随机选择一个 print(f"抽选结果:{random_name}")

练习2:求列表元素的总和和平均值

求列表[2, 6, 1, 7, 4]里面所有元素的和以及平均值。

python

numbers = [2, 6, 1, 7, 4] total = sum(numbers) # 使用内置 sum 函数 average = total / len(numbers) print(f"总和:{total},平均值:{average:.2f}") # 输出: 总和:20,平均值:4.00

练习3:求列表中的最大值

求列表[2, 6, 1, 25, 7]中的最大值。

python

numbers = [2, 6, 1, 25, 7] # 方法1:使用 max 函数 print(max(numbers)) # 输出: 25 # 方法2:手动实现 max_value = numbers[0] # 默认最大值取列表中的第一个元素 for num in numbers: if num > max_value: max_value = num print(f"最大值:{max_value}") # 输出: 最大值:25

练习4:列表筛选(大于等于10)

将列表[2, 0, 6, 1, 77, 0, 52, 0, 25, 7]中大于等于 10 的元素选出来,放入新列表中。

python

numbers = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7] new_list = [] for num in numbers: if num >= 10: new_list.append(num) print(f"原列表:{numbers}") print(f"筛选结果(>=10):{new_list}") # 输出: [77, 52, 25]

练习5:列表筛选(过滤0)

将列表[2, 0, 6, 1, 77, 0, 52, 0, 25, 7]筛选,形成一个不包含 0 的新列表。

python

numbers = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7] # 方法1:使用 for 循环 new_list = [] for num in numbers: if num != 0: new_list.append(num) # 方法2:使用列表推导式(更 Pythonic) new_list = [num for num in numbers if num != 0] print(f"原列表:{numbers}") print(f"筛选结果(不含0):{new_list}") # 输出: [2, 6, 1, 77, 52, 25, 7]

四、总结

函数核心要点

概念说明
定义def 函数名(参数):
调用函数名(参数)
返回值return 值
无返回值返回None
注意事项函数必须先定义后使用

列表 vs 字符串对比

特性列表(list)字符串(str)
可修改
元素类型任意类型仅字符
下标索引
重复元素
遍历方式for / whilefor / while

📝最后提醒:函数和数据容器是 Python 编程的基石,掌握好它们,你就能写出更加优雅、高效的代码。不要死记硬背方法,多敲代码、多练习,自然就熟练了!

如果觉得有帮助,欢迎点赞、收藏、评论!😊

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询