查看: 157|回复: 1

Python 函数、列表、字典及文件操作核心语法与代码示例

[复制链接]
发表于 4 小时前 | 显示全部楼层 |阅读模式
在Python编程中,函数、列表、元组、字典和文件操作是最基础也是最常用的知识模块。很多初学者学完每个知识点后,却难以在实际代码中灵活组合使用。本文将从函数定义开始,逐步深入到参数、返回值、变量作用域、递归,再到列表、元组、字典的增删改查,最后讲解文件读写操作,并通过一个综合示例串联这些内容。

一、函数:封装重复代码

在没有函数时,如果我们要计算多个不同区间的整数和,可能需要反复写类似的for循环。例如计算1-100、300-400、1-1000的和,每段代码几乎相同,只是起始值和终止值不同。这种重复代码不仅冗余,而且修改时容易遗漏。

函数可以把重复逻辑封装起来,起个名字,以后直接调用。Python定义函数的基本格式是:
  1. def 函数名(参数列表):
  2.     函数体
  3.     return 返回值
复制代码

例如:
  1. def say_hello():
  2.     print("hello")
  3. say_hello()
复制代码

注意:定义函数本身不会执行函数体,只有调用时才会执行。

二、函数参数与返回值

参数让函数处理不同数据。形参是定义时括号里的变量名,实参是调用时传入的具体值。
  1. def calc_sum(beg, end):
  2.     total = 0
  3.     for i in range(beg, end + 1):
  4.         total += i
  5.     return total
  6. print(calc_sum(1, 100))
复制代码

参数个数必须匹配,否则报错。Python是动态类型语言,参数不需要声明类型,但开发者需要清楚函数期望接收什么类型。

返回值是函数的输出。建议函数只负责计算逻辑,把结果交给调用者处理(打印、写入文件等),遵循“低耦合,高内聚”原则。
  1. def calc_sum(beg, end):
  2.     total = 0
  3.     for i in range(beg, end + 1):
  4.         total += i
  5.     return total
  6. result = calc_sum(1, 100)
  7. print(result)
复制代码

return会立即结束函数。Python函数可以返回多个值,本质上是返回一个元组。
  1. def get_point():
  2.     x = 10
  3.     y = 20
  4.     return x, y
  5. a, b = get_point()
  6. print(a, b)  # 10 20
复制代码

三、变量作用域与global

函数内部定义的变量是局部变量,只在函数内有效,外部无法直接访问。定义在函数外部的变量是全局变量。如果在函数内需要修改全局变量,必须使用global声明。
  1. x = 20
  2. def test():
  3.     global x
  4.     x = 10
  5. test()
  6. print(x)  # 10
复制代码

但大量使用global不利于维护,建议通过参数和返回值传递数据。

四、递归:函数调用自己

递归适用于天然递归的问题,如阶乘、树遍历等。写递归必须有结束条件,且每次递归都要向结束条件靠近。
  1. def factor(n):
  2.     if n == 1:
  3.         return 1
  4.     return n * factor(n - 1)
  5. print(factor(5))  # 120
复制代码

递归代码简洁,但理解成本高,深度过大可能导致栈溢出。能用循环解决的问题优先用循环。

五、默认参数与关键字参数

默认参数在定义时指定默认值,须放在参数列表末尾。
  1. def add(x, y, debug=False):
  2.     if debug:
  3.         print(f"调试:x={x}, y={y}")
  4.     return x + y
  5. print(add(10, 20))          # 30
  6. print(add(10, 20, True))    # 30 并打印调试信息
复制代码

关键字参数在调用时显式指定参数名,顺序可调,提高可读性。
  1. def test(x, y):
  2.     print(x, y)
  3. test(y=100, x=200)
复制代码

六、列表:可变序列

列表用方括号[]创建,可保存多个元素,甚至不同类型,但通常存放同类数据。
  1. alist = [1, 2, 3, 4]
  2. print(alist[0])     # 下标从0开始
  3. alist[2] = 100      # 修改
  4. print(len(alist))   # 长度
复制代码

切片操作一次取出一段列表,前闭后开。
  1. print(alist[1:3])   # [2, 3]
  2. print(alist[::-1]) # 反转列表
复制代码

遍历列表常用for循环:
  1. for elem in alist:
  2.     print(elem)
  3. for i, elem in enumerate(alist):
  4.     print(i, elem)  # 同时获取下标和元素
复制代码

列表常见操作:
  1. alist.append(4)              # 尾插
  2. alist.insert(1, "hello")    # 指定位置插入
  3. print(2 in alist)           # 判断存在
  4. index = alist.index(3)      # 查找下标(不存在报错)
  5. alist.pop()                 # 删除最后一个
  6. alist.pop(2)                # 按下标删除
  7. alist.remove(2)             # 按值删除
  8. c = a + b                   # 连接生成新列表
  9. a.extend(b)                 # 在原列表后追加
复制代码

七、元组:不可变的序列

元组用圆括号()创建,创建后不能修改(增、删、改都不支持)。支持读操作,如下标、切片、遍历。
  1. atuple = (1, 2, 3)
  2. print(atuple[0])           # 1
  3. for elem in atuple:
  4.     print(elem)
复制代码

元组适用于固定数据组合,如坐标、函数多返回值。列表可变,元组不可变,根据需求选择。

八、字典:键值对存储

字典用花括号{}创建,每个元素是key: value对。key通常是不可变类型(如字符串、数字、元组),不能是列表等可变对象。
  1. student = {
  2.     "id": 1,
  3.     "name": "zhangsan",
  4.     "score": 90
  5. }
  6. # 判断key是否存在
  7. print("id" in student)
  8. # 获取值,不存在报错
  9. print(student["name"])
  10. # 更安全使用get,可指定默认值
  11. print(student.get("score", 0))
  12. # 新增或修改
  13. student["grade"] = "A"   # key不存在则新增
  14. student["score"] = 100  # key存在则修改
  15. # 删除
  16. student.pop("score")
  17. # 遍历
  18. for key in student:
  19.     print(key, student[key])
  20. for key, value in student.items():
  21.     print(key, value)
复制代码

字典依赖哈希表,因此key必须可哈希,即不可变。元组可作为key,列表不行。

九、文件操作:持久化数据

内存中的数据程序结束即消失,文件可以把数据保存到硬盘。文件操作三步走:打开、读写、关闭。

路径写法:推荐使用斜杠/或双反斜杠\\。绝对路径从盘符开始,相对路径相对于当前工作目录。

打开文件用open(),模式包括:

- "r":读(文件必须存在)
- "w":写(覆盖原有内容,文件不存在则创建)
- "a":追加(在末尾写入)
- "rb" / "wb":二进制读写

建议使用with语句自动关闭文件:
  1. # 写文件
  2. with open("D:/test.txt", "w", encoding="utf-8") as f:
  3.     f.write("hello Python\n")
  4. # 追加
  5. with open("D:/test.txt", "a", encoding="utf-8") as f:
  6.     f.write("追加一行\n")
  7. # 读全部
  8. with open("D:/test.txt", "r", encoding="utf-8") as f:
  9.     content = f.read()
  10.     print(content)
  11. # 逐行读取
  12. with open("D:/test.txt", "r", encoding="utf-8") as f:
  13.     for line in f:
  14.         print(line, end="")
复制代码

读大文件时,用for循环逐行读取比read()一次性全部读入更省内存。

十、综合练习:统计平均分

将函数、列表、字典结合,计算学生成绩平均分。
  1. students = [
  2.     {"name": "张三", "score": 80},
  3.     {"name": "李四", "score": 95},
  4.     {"name": "王五", "score": 70}
  5. ]
  6. def calc_average(students):
  7.     total = 0
  8.     for s in students:
  9.         total += s["score"]
  10.     return total / len(students)
  11. avg = calc_average(students)
  12. print(f"平均分:{avg}")
复制代码

通过这个例子可以看到,函数封装计算逻辑,列表保存多个学生字典,字典存储每个学生的属性。这种组合是Python项目中非常常见的模式。

掌握以上基础后,你可以更高效地编写Python脚本,处理数据、读写配置文件、构建自动化任务等。
回复

使用道具 举报

发表于 1 小时前 | 显示全部楼层

Re: Python 函数、列表、字典及文件操作核心语法与代码示例

楼主的总结很清晰,函数、列表、字典和文件操作确实是日常用得最多的几个模块。我特别赞同关于“低耦合高内聚”的写法,把计算和输出分开维护起来确实轻松很多。另外递归部分的建议也很实用,很多新手一上来就递归,结果没考虑栈深度,用循环其实更可控。 对了,帖子标题里提到了文件操作,但正文好像只写到字典部分?是还没贴完还是我漏看了?期待后续的文件读写示例和综合练习,麻烦楼主继续更新啦~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-6-20 14:03 , Processed in 0.029189 second(s), 18 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部