这段时间系统学习了 Python 函数,算是把我之前一直模糊不懂的知识点彻底理顺了。以前写代码都是一堆循环堆在一起,很乱、不好改,重复代码特别多。学完函数之后,我才真正明白为什么要封装代码。
首先我搞懂了普通函数和匿名函数的区别。平时常用的功能、逻辑比较复杂的,就正常定义函数,方便重复使用。如果只是临时用一下、逻辑很简单,比如排序取值,就可以用匿名函数,不用起名,写起来很简洁。
# 普通函数,适合多次调用、逻辑复杂场景 def get_stu_id(stu): return stu["id"] # lambda匿名函数,适合一次性简单逻辑 lambda stu: stu["id"]这次学习也彻底弄懂了列表和函数是怎么配合工作的。列表只管存数据,函数负责提供规则。比如字典列表排序,程序不知道按什么排,就靠函数取出 id、年龄这些字段,实现自定义排序,之前一直不懂为什么要传函数,现在完全明白了。
stu_list = [{"id":105,"name":"小张"},{"id":102,"name":"小李"}] # 将取值函数传入sorted,完成自定义排序 res = sorted(stu_list, key=get_stu_id)同时我分清了全局变量和局部变量,也会用对应的关键字修改变量。以前在函数里改值,外面不变,一直踩坑,现在知道了作用域的区别,写代码很少出错了。
num = 10 def modify_global(): global num # 声明操作全局变量 num = 20 def outer(): n = 5 def inner(): nonlocal n # 修改外层嵌套函数变量 n = 8 inner()还亲手练习了冒泡排序和选择排序,知道了两种排序的特点,一个写着简单但交换多,一个交换少但不稳定,做题的时候能根据情况选择。
# 冒泡核心逻辑 for i in range(n): for j in range(n-i-1): if arr[j]>arr[j+1]: arr[j],arr[j+1]=arr[j+1],arr[j] # 选择排序核心逻辑 for i in range(n): min_idx=i for j in range(i+1,n): if arr[j]<arr[min_idx]: min_idx=j arr[i],arr[min_idx]=arr[min_idx],arr[i]另外接触了系统模块,学会简单操作电脑路径、文件,还有获取程序运行信息,感觉 Python 能做的事情变多了。
import os,sys os.getcwd() # 获取当前工作路径 sys.path # 获取模块检索路径最后通过写学生管理系统、成绩管理系统,真正体会到函数的用处。把新增、查询、修改、删除每个功能单独写成函数,代码结构特别清楚,改 bug、加功能都很方便,不会一团乱。
# 管理系统拆分功能函数示例 def add_student(): pass def search_student(): pass def edit_student(): pass