Python 函数、列表、字典及文件操作核心语法与代码示例
在Python编程中,函数、列表、元组、字典和文件操作是最基础也是最常用的知识模块。很多初学者学完每个知识点后,却难以在实际代码中灵活组合使用。本文将从函数定义开始,逐步深入到参数、返回值、变量作用域、递归,再到列表、元组、字典的增删改查,最后讲解文件读写操作,并通过一个综合示例串联这些内容。一、函数:封装重复代码
在没有函数时,如果我们要计算多个不同区间的整数和,可能需要反复写类似的for循环。例如计算1-100、300-400、1-1000的和,每段代码几乎相同,只是起始值和终止值不同。这种重复代码不仅冗余,而且修改时容易遗漏。
函数可以把重复逻辑封装起来,起个名字,以后直接调用。Python定义函数的基本格式是:
def 函数名(参数列表):
函数体
return 返回值
例如:
def say_hello():
print("hello")
say_hello()
注意:定义函数本身不会执行函数体,只有调用时才会执行。
二、函数参数与返回值
参数让函数处理不同数据。形参是定义时括号里的变量名,实参是调用时传入的具体值。
def calc_sum(beg, end):
total = 0
for i in range(beg, end + 1):
total += i
return total
print(calc_sum(1, 100))
参数个数必须匹配,否则报错。Python是动态类型语言,参数不需要声明类型,但开发者需要清楚函数期望接收什么类型。
返回值是函数的输出。建议函数只负责计算逻辑,把结果交给调用者处理(打印、写入文件等),遵循“低耦合,高内聚”原则。
def calc_sum(beg, end):
total = 0
for i in range(beg, end + 1):
total += i
return total
result = calc_sum(1, 100)
print(result)
return会立即结束函数。Python函数可以返回多个值,本质上是返回一个元组。
def get_point():
x = 10
y = 20
return x, y
a, b = get_point()
print(a, b)# 10 20
三、变量作用域与global
函数内部定义的变量是局部变量,只在函数内有效,外部无法直接访问。定义在函数外部的变量是全局变量。如果在函数内需要修改全局变量,必须使用global声明。
x = 20
def test():
global x
x = 10
test()
print(x)# 10
但大量使用global不利于维护,建议通过参数和返回值传递数据。
四、递归:函数调用自己
递归适用于天然递归的问题,如阶乘、树遍历等。写递归必须有结束条件,且每次递归都要向结束条件靠近。
def factor(n):
if n == 1:
return 1
return n * factor(n - 1)
print(factor(5))# 120
递归代码简洁,但理解成本高,深度过大可能导致栈溢出。能用循环解决的问题优先用循环。
五、默认参数与关键字参数
默认参数在定义时指定默认值,须放在参数列表末尾。
def add(x, y, debug=False):
if debug:
print(f"调试:x={x}, y={y}")
return x + y
print(add(10, 20)) # 30
print(add(10, 20, True)) # 30 并打印调试信息
关键字参数在调用时显式指定参数名,顺序可调,提高可读性。
def test(x, y):
print(x, y)
test(y=100, x=200)
六、列表:可变序列
列表用方括号[]创建,可保存多个元素,甚至不同类型,但通常存放同类数据。
alist =
print(alist) # 下标从0开始
alist = 100 # 修改
print(len(alist)) # 长度
切片操作一次取出一段列表,前闭后开。
print(alist) #
print(alist[::-1]) # 反转列表
遍历列表常用for循环:
for elem in alist:
print(elem)
for i, elem in enumerate(alist):
print(i, elem)# 同时获取下标和元素
列表常见操作:
alist.append(4) # 尾插
alist.insert(1, "hello") # 指定位置插入
print(2 in alist) # 判断存在
index = alist.index(3) # 查找下标(不存在报错)
alist.pop() # 删除最后一个
alist.pop(2) # 按下标删除
alist.remove(2) # 按值删除
c = a + b # 连接生成新列表
a.extend(b) # 在原列表后追加
七、元组:不可变的序列
元组用圆括号()创建,创建后不能修改(增、删、改都不支持)。支持读操作,如下标、切片、遍历。
atuple = (1, 2, 3)
print(atuple) # 1
for elem in atuple:
print(elem)
元组适用于固定数据组合,如坐标、函数多返回值。列表可变,元组不可变,根据需求选择。
八、字典:键值对存储
字典用花括号{}创建,每个元素是key: value对。key通常是不可变类型(如字符串、数字、元组),不能是列表等可变对象。
student = {
"id": 1,
"name": "zhangsan",
"score": 90
}
# 判断key是否存在
print("id" in student)
# 获取值,不存在报错
print(student["name"])
# 更安全使用get,可指定默认值
print(student.get("score", 0))
# 新增或修改
student["grade"] = "A" # key不存在则新增
student["score"] = 100# key存在则修改
# 删除
student.pop("score")
# 遍历
for key in student:
print(key, student)
for key, value in student.items():
print(key, value)
字典依赖哈希表,因此key必须可哈希,即不可变。元组可作为key,列表不行。
九、文件操作:持久化数据
内存中的数据程序结束即消失,文件可以把数据保存到硬盘。文件操作三步走:打开、读写、关闭。
路径写法:推荐使用斜杠/或双反斜杠\\。绝对路径从盘符开始,相对路径相对于当前工作目录。
打开文件用open(),模式包括:
- "r":读(文件必须存在)
- "w":写(覆盖原有内容,文件不存在则创建)
- "a":追加(在末尾写入)
- "rb" / "wb":二进制读写
建议使用with语句自动关闭文件:
# 写文件
with open("D:/test.txt", "w", encoding="utf-8") as f:
f.write("hello Python\n")
# 追加
with open("D:/test.txt", "a", encoding="utf-8") as f:
f.write("追加一行\n")
# 读全部
with open("D:/test.txt", "r", encoding="utf-8") as f:
content = f.read()
print(content)
# 逐行读取
with open("D:/test.txt", "r", encoding="utf-8") as f:
for line in f:
print(line, end="")
读大文件时,用for循环逐行读取比read()一次性全部读入更省内存。
十、综合练习:统计平均分
将函数、列表、字典结合,计算学生成绩平均分。
students = [
{"name": "张三", "score": 80},
{"name": "李四", "score": 95},
{"name": "王五", "score": 70}
]
def calc_average(students):
total = 0
for s in students:
total += s["score"]
return total / len(students)
avg = calc_average(students)
print(f"平均分:{avg}")
通过这个例子可以看到,函数封装计算逻辑,列表保存多个学生字典,字典存储每个学生的属性。这种组合是Python项目中非常常见的模式。
掌握以上基础后,你可以更高效地编写Python脚本,处理数据、读写配置文件、构建自动化任务等。
Re: Python 函数、列表、字典及文件操作核心语法与代码示例
楼主的总结很清晰,函数、列表、字典和文件操作确实是日常用得最多的几个模块。我特别赞同关于“低耦合高内聚”的写法,把计算和输出分开维护起来确实轻松很多。另外递归部分的建议也很实用,很多新手一上来就递归,结果没考虑栈深度,用循环其实更可控。 对了,帖子标题里提到了文件操作,但正文好像只写到字典部分?是还没贴完还是我漏看了?期待后续的文件读写示例和综合练习,麻烦楼主继续更新啦~Re: Python 函数、列表、字典及文件操作核心语法与代码示例
楼主总结得非常详尽,把 Python 基础里容易混淆的函数、参数、作用域、递归以及列表字典文件操作都串起来了,尤其是“低耦合,高内聚”那句和默认参数的位置提醒,对新手很有帮助。看到综合示例部分还没贴完,期待后续把文件读写和综合案例补上,这样就能完整复习一遍了。另外,字典里 `get()` 方法那段已经在末尾提到,实际中用 `dict.get(key, default)` 确实比直接 `[]` 安全很多,不用额外 `if in` 判断。感谢分享!Re: Python 函数、列表、字典及文件操作核心语法与代码示例
楼主总结得很系统,从函数到数据结构再到文件操作,脉络清晰,对初学者理解Python核心语法很有帮助。特别是强调函数应只负责计算、调用者处理结果这点,体现了好的编程习惯。期待看到你提到的综合示例,如何把这些模块串联成一个实际场景的代码。
页:
[1]