跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
搜索
|注册
博客列表
Python算法

Python 函数、列表与元组核心用法及实战解析

Python 函数、列表与元组是构建程序的基础。函数通过复用代码提升效率,支持默认参数与递归调用。列表作为可变容器支持增删改查,元组则提供不可变的数据保护。掌握下标访问、切片操作及作用域规则,能有效处理批量数据与逻辑封装。

清酒独酌发布于 2026/3/22更新于 2026/5/68 浏览
Python 函数、列表与元组核心用法及实战解析

Python 函数、列表与元组核心用法及实战解析

作为 Python 初学者,掌握函数、列表、元组是从'写代码'到'写好代码'的关键一步。它们不仅是语法的核心,更是后续处理复杂数据、构建高效程序的基础。本文将结合实战案例,把这三个知识点讲透。

一、函数:告别重复代码的'工厂'

1.1 为什么需要函数?

写代码最忌讳的就是'复制粘贴'。比如计算不同区间的数列和(1-100、300-400),如果不使用函数,需要重复写多组几乎一样的循环代码:

# 原始写法:重复且难以维护
theSum = 0
for i in range(1, 101):
    theSum = theSum + i
print(theSum)

theSum = 0
for i in range(300, 401):
    theSum = theSum + i
print(theSum)

一旦需要修改计算逻辑(比如改成求平方和),所有重复代码都要改。而函数的核心作用,就是提取重复代码,实现复用,让程序更简洁、更好维护。

简单理解:函数就像一个'工厂',输入'原材料'(参数),经过内部加工(函数体),输出'产品'(返回值),一次定义,多次调用。

# 优化后的函数版本
def calc_sum(begin, end):
    the_sum = 0
    for i in range(begin, end + 1):
        the_sum += i
    print(the_sum)

# 调用函数
calc_sum(1, 100)
calc_sum(300, 400)
calc_sum(1, 1000)

1.2 函数的核心语法

(1)定义与调用
# 定义函数:def 函数名 (形参列表): 函数体 return 返回值
def calc_sum(beg, end):
    # beg、end 是'形式参数',相当于工厂的'原材料入口'
    total = 0
    for i in range(beg, end + 1):
        total += i
    return total  # return 输出结果,相当于工厂的'产品出口'

# 调用函数:函数名 (实参列表)
result1 = calc_sum(1, 100)  # 1、100 是'实际参数'
result2 = calc_sum(300, 400)
print(result1, result2)  # 输出:5050 35150

⚠️ 关键注意点:

  • 函数必须先定义,再调用,否则会报 NameError。
  • 定义时不会执行函数体,只有调用时才执行。
  • 形参和实参的个数必须匹配,否则报 TypeError。
(2)参数的灵活用法

Python 的参数机制比 C++、Java 更灵活,核心有 3 个特性:

  1. 动态类型:形参无需指定类型,一个函数可接收多种类型参数。
def print_param(a):
    print(a)

print_param(10)      # 整数
print_param("hello") # 字符串
print_param(True)    # 布尔值
  1. 默认参数:给形参设置默认值,调用时可省略该参数。注意:默认值参数必须在无默认值参数后面。
# 计算两数之和,默认不打印调试信息
def add(x, y, debug=False):
    if debug:
        print(f"调试:x={x}, y={y}")
    return x + y

print(add(10, 20))           # 省略 debug,使用默认值 False
print(add(10, 20, True))     # 显式传参,打印调试信息
  1. 关键字参数:调用时显示指定'实参对应哪个形参',可打乱传参顺序。
def test(x, y):
    print(f"x = {x}")
    print(f"y = {y}")

# 关键字参数,顺序无关
test(x=10, y=20)
test(y=100, x=200)
(3)返回值与变量作用域

返回值:一个函数可以有多个 return 语句,执行到 return 时函数立刻结束。支持一次返回多个值(用逗号分隔)。

def get_point():
    x = 10
    y = 20
    return x, y  # 返回两个值

# 接收返回值
_, b = get_point()  # 忽略 x,只接收 y

变量作用域:决定了变量能在哪些地方使用。

  • 局部变量:函数内部定义,仅在函数内生效。
  • 全局变量:函数外部定义,函数内可访问,但修改时需要用 global 声明。
x = 10  # 全局变量

def test():
    global x
    x = 20  # 修改全局变量需声明

test()
print(f"x = {x}")  # 输出 20

1.3 进阶用法:嵌套与递归

链式调用:把一个函数的返回值,作为另一个函数的参数。

def is_odd(num):
    return num % 2 == 0

def add(x, y):
    return x + y

# 嵌套调用
print(is_odd(add(5, 5)))  # 先加后判断奇偶

递归调用:函数调用自身。核心是'有结束条件 + 每次逼近结束条件',否则会无限递归导致 RecursionError。

# 递归计算 n 的阶乘
def factor(n):
    if n == 1:  # 结束条件
        return 1
    return n * factor(n - 1)

print(factor(5))  # 输出 120

⚠️ 注意:递归代码简洁但难理解,易栈溢出,实际开发中优先用循环替代。

二、列表和元组:批量存储数据的'容器'

当需要存储多个数据(比如 10 个学生的成绩)时,单独定义多个变量不现实。此时就需要列表(list)和元组(tuple)——它们是 Python 中最常用的'序列类型'。

核心区别:

  • 列表(list):可变容器,元素可增删改。
  • 元组(tuple):不可变容器,元素创建后无法修改。

2.1 列表(list):最常用的可变容器

(1)创建列表

推荐直接使用 [ ],更简洁。

a = []              # 空列表
b = list()          # 使用构造函数
c = [1, 2, 3, 4]    # 带初始值
d = [1, 'hello', True]  # 混合类型

⚠️ 注意:不要用 list 作为变量名,这会覆盖内置函数 list()。

(2)核心操作

列表的操作都围绕'下标'展开,下标从 0 开始(负数表示倒数,-1 是最后一个元素)。

操作目的代码示例说明
访问元素list[2]访问下标 2 的元素,越界报 IndexError
修改元素list[2] = 100修改指定位置的值
切片list[1:3]取下标 1 到 3(左闭右开)
新增元素append() / insert()尾插或指定位置插入
删除元素pop() / remove()按索引或按值删除
查找元素in / index()判断存在性或获取下标
连接列表+ / extend()拼接列表
# 下标访问与修改
a = [1, 2, 3, 4]
print(a[2])       # 3
a[2] = 100
print(a[-1])      # 4 (倒数第一个)

# 遍历
for elem in a:
    print(elem)

# 增删查改
a.append(5)       # 末尾添加
a.pop()           # 删除末尾
a.remove(2)       # 删除值为 2 的元素
(3)切片操作的灵活用法

切片是列表的'灵魂操作',支持省略边界、指定步长。

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]

# 基本切片
print(a[1:3])     # [2, 3]

# 省略边界
print(a[1:])      # 从 1 取到结尾
print(a[:2])      # 从开头取到 2
print(a[:])       # 复制整个列表

# 步长
print(a[::2])     # 每隔一个取一个
print(a[::-1])    # 反转列表

2.2 元组(tuple):不可变的序列容器

元组的用法和列表几乎一致,但核心区别是'不可变'。适合存储不需要修改的数据(比如身份证号、坐标)。

# 创建元组
a = ()            # 空元组
b = (1, 2, 3)     # 带值
single = (1,)     # 单个元素必须加逗号

# 支持读操作
print(b[0])       # 1
print(b[1:3])     # (2, 3)

# 不支持写操作
# b[0] = 100     # 报错 TypeError
# b.append(4)    # 报错 AttributeError

为什么有了列表还需要元组?

  1. 安全性:传递数据时,用元组可避免数据被意外修改。
  2. 字典键:字典的键必须是'可哈希对象'(不可变类型),元组可以,列表不行。

2.3 小结

特性列表(list)元组(tuple)
定义方式[]()
是否可变可变不可变
适用场景需频繁修改数据数据无需修改
核心操作增删改查仅读操作

在需要表示一个'序列'的场景下,就可以考虑使用列表和元组。如果元素不需要改变,则优先考虑元组;如果需要改变,则优先考虑列表。

结语

掌握函数、列表与元组,意味着你掌握了 Python 编程的基石。函数让逻辑清晰复用,列表与元组让数据处理游刃有余。在实际开发中,根据数据是否需要修改来选择合适的容器,能让你的代码更加健壮。

目录

  1. Python 函数、列表与元组核心用法及实战解析
  2. 一、函数:告别重复代码的“工厂”
  3. 1.1 为什么需要函数?
  4. 原始写法:重复且难以维护
  5. 优化后的函数版本
  6. 调用函数
  7. 1.2 函数的核心语法
  8. (1)定义与调用
  9. 定义函数:def 函数名 (形参列表): 函数体 return 返回值
  10. 调用函数:函数名 (实参列表)
  11. (2)参数的灵活用法
  12. 计算两数之和,默认不打印调试信息
  13. 关键字参数,顺序无关
  14. (3)返回值与变量作用域
  15. 接收返回值
  16. 1.3 进阶用法:嵌套与递归
  17. 嵌套调用
  18. 递归计算 n 的阶乘
  19. 二、列表和元组:批量存储数据的“容器”
  20. 2.1 列表(list):最常用的可变容器
  21. (1)创建列表
  22. (2)核心操作
  23. 下标访问与修改
  24. 遍历
  25. 增删查改
  26. (3)切片操作的灵活用法
  27. 基本切片
  28. 省略边界
  29. 步长
  30. 2.2 元组(tuple):不可变的序列容器
  31. 创建元组
  32. 支持读操作
  33. 不支持写操作
  34. b[0] = 100 # 报错 TypeError
  35. b.append(4) # 报错 AttributeError
  36. 2.3 小结
  37. 结语
  • 💰 8折买阿里云服务器限时8折了解详情
  • GPT-5.5 超高智商模型1元抵1刀ChatGPT中转购买
  • 代充Chatgpt Plus/pro 帐号了解详情
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 腾讯 HunyuanImage-2.1:24GB 显存实现 2K 超高清 AI 绘画
  • Python 实现 AI 绘画用户评价自动分类与报告生成
  • 5 款开源 PPT 生成大模型实测对比:从 ChatGPT 到文心一言
  • Python 高级编程技术详解与实战
  • Cosmos-Reason1-7B 实战:工业巡检中设备异常动作识别与推理
  • 大模型 LLM 学习路线图全面解析与核心技能指南
  • llama.cpp 量化模型部署实战:从模型转换到 API 服务
  • PowerShell 7 国内镜像下载与安装指南
  • 构建 AI 临床副驾驶:基于 Go 的电子病历智能助手与 HIS 对接
  • UI UX Pro Max 驱动的现代前端 UI 工作流指南
  • Ilya Sutskever 精选 AI 论文清单:40 大核心文献整理与解析
  • Python PDB 调试工具详解
  • 基于 Ubuntu 20.04 的 QGroundControl 地面站安装指南
  • GESP-C++ 三级考试核心考点与编程实战模板
  • 基于 LangGraph 的智能体开发实训方案与技术实现
  • 黑客文化兴起:从少儿编程到加密货币漏洞赏金
  • 人工智能多模态模型开发与应用:文本、图像与语音融合实践
  • Webots 2025a + ROS 2 Jazzy e-puck 机器人仿真与导航教程
  • 基于 Django 框架的物流车辆预约平台设计与实现
  • 鸿蒙 Share Kit 目标应用开发指南

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online