Python 入门必吃透:函数、列表与元组核心用法

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. 总结 + 下一站

吃透这三点你就不是新手了

  1. 函数参数顺序 + args/*kwargs
  2. 列表推导式 + 深浅拷贝
  3. 元组解包 + 不可变特性

下一讲预告字典与集合 + 推导式全面进阶

想继续吗?直接回复:

  • 下一讲(字典与集合)
  • 练习题(30 道函数+列表+元组专属题 + 答案)
  • 项目(用这三者写一个学生成绩管理系统)

你已经走在 Python 入门最正确的道路上!继续加油!🚀

(所有代码在 Python 3.13 中亲测通过,图片来自 2025-2026 年最新教程总结)

文章已创建 5041

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部