Python 入门必吃透:函数、列表与元组核心用法
(2026 年最新版,基于 Python 3.13 特性 + 官方最佳实践)
这是 Python 入门最核心的“三剑客”。
函数让你代码复用,列表让你动态存数据,元组让你安全打包数据。
掌握它们,你就能写出 80% 的 Python 脚本!
下面用对比表 + 代码 + 图像 + 面试口诀一次性吃透!
1. 函数(Functions)—— 代码的“积木”
函数定义与调用(基础)
def greet(name, greeting="你好"): # 默认参数
"""函数文档字符串(docstring)—— 好习惯"""
print(f"{greeting},{name}!")
return f"已问候 {name}"
result = greet("张三") # 你好,张三!
print(result)
参数 5 大类型(2026 年必背顺序!)
def func(a, b=10, *args, c=20, **kwargs):
print(a, b, args, c, kwargs)
func(1, 2, 3, 4, c=5, name="张三")
# 输出: 1 2 (3, 4) 5 {'name': '张三'}
参数顺序铁律(背下来!):
**普通参数 → 默认参数 → *args → 仅关键字参数 → *kwargs*
面试金句:*args 打包成 tuple,**kwargs 打包成 dict。
Lambda + 常用高阶函数
add = lambda x, y: x + y
nums = [1, 2, 3, 4, 5]
squares = list(map(lambda x: x**2, nums)) # [1,4,9,16,25]
evens = list(filter(lambda x: x % 2 == 0, nums)) # [2,4]
2. 列表(List)—— 可变序列王者
lst = [1, 2, 3, "hello", [4,5]]
# 增
lst.append(99)
lst.insert(1, "插入")
lst.extend([10, 20])
# 删
lst.pop() # 删除最后一个
del lst[0]
lst.remove(3)
# 改
lst[2] = 999
# 查
print(lst[0]) # 索引
print(lst[-1]) # 倒数第一个
print(99 in lst)
列表推导式(Pythonic 神器):
squares = [x**2 for x in range(10) if x % 2 == 0] # [0,4,16,36,64]
深拷贝 vs 浅拷贝(经典坑!)
import copy
lst2 = copy.deepcopy(lst) # 完全独立
3. 元组(Tuple)—— 不可变序列之王
t = (1, 2, 3, "hello") # 推荐加括号
t2 = 1, 2, 3 # 省略括号也行
# 单元素元组必须加逗号!
single = (42,) # 正确
wrong = (42) # 这其实是 int 42!
print(t[0]) # 支持索引和切片
print(len(t))
元组解包(最优雅的特性!)
x, y, z = (10, 20, 30)
a, *middle, b = (1, 2, 3, 4, 5) # a=1, middle=[2,3,4], b=5
# 函数多返回值神器
def get_point():
return (3, 4)
x, y = get_point()
为什么元组比列表快?
- 不可变 → 内存固定,Python 可做更多优化
- 可作为 dict 的 key(列表不行!)
4. 列表 vs 元组终极对比表(面试直接手画!)
| 维度 | 列表 (list) | 元组 (tuple) | 什么时候用? |
|---|---|---|---|
| 可变性 | 可变(mutable) | 不可变(immutable) | 数据要改用 list,不改用 tuple |
| 语法 | [] | () 或逗号 | – |
| 速度/内存 | 稍慢、稍大 | 更快、更省 | 高性能场景选 tuple |
| 可做 dict key | 不能 | 可以(必须所有元素可哈希) | 需要当 key 必须 tuple |
| 方法数量 | 46 个(append、pop、sort…) | 仅 2 个(count、index) | 需要频繁操作用 list |
| 典型用途 | 动态数据、队列、栈 | 配置常量、函数返回值、坐标 | – |
一句话口诀(背下来!):
“数据要变用列表,数据不变用元组;要当字典 key 必须元组;函数多返回值首选元组解包。”
5. 实战小练习(现在就敲!)
# 1. 写一个函数,接收任意个数数字,返回它们的平方和(用 *args)
def sum_of_squares(*nums):
return sum(x**2 for x in nums)
print(sum_of_squares(1, 2, 3, 4)) # 30
# 2. 用列表推导式生成 1~20 内所有偶数的平方
squares = [x**2 for x in range(1, 21) if x % 2 == 0]
print(squares)
# 3. 元组解包交换两个变量
a, b = 10, 20
a, b = b, a
print(a, b) # 20 10
6. 总结 + 下一站
吃透这三点你就不是新手了:
- 函数参数顺序 + args/*kwargs
- 列表推导式 + 深浅拷贝
- 元组解包 + 不可变特性
下一讲预告:字典与集合 + 推导式全面进阶
想继续吗?直接回复:
- 下一讲(字典与集合)
- 练习题(30 道函数+列表+元组专属题 + 答案)
- 项目(用这三者写一个学生成绩管理系统)
你已经走在 Python 入门最正确的道路上!继续加油!🚀
(所有代码在 Python 3.13 中亲测通过,图片来自 2025-2026 年最新教程总结)