公司动态

Python零基础核心语法全梳理:函数、容器、文件操作一文吃透

📅 2026/7/24 11:23:32
Python零基础核心语法全梳理:函数、容器、文件操作一文吃透
Python零基础核心语法全梳理函数、容器、文件操作一文吃透前言很多刚入门Python的小伙伴学到函数、列表字典、文件读写时容易混淆概念分不清什么时候用列表、什么时候用元组递归又总写栈溢出文件读写还经常遇到中文乱码、忘记关闭文件的问题。今天结合系统学习笔记把Python最核心的四大模块函数、列表元组、字典、文件操作完整拆解搭配通俗类比可运行代码零基础也能看懂适合收藏复习。一、函数代码复用的核心工具1. 什么是函数编程里的函数就是一段可以重复调用的代码片段。如果不使用函数重复逻辑要复制粘贴多份后续修改要改几十处维护成本极高把重复逻辑封装成函数一处修改全局生效。举个求和例子# 不使用函数重复代码# 1~100求和sum10foriinrange(1,101):sum1iprint(sum1)# 300~400求和sum20foriinrange(300,401):sum2iprint(sum2)封装函数后一行调用即可# 定义求和函数defcalcSum(beg,end):total0foriinrange(beg,end1):totalireturntotal# 直接调用传入不同参数print(calcSum(1,100))print(calcSum(300,400))print(calcSum(1,1000))2. 函数基础语法1定义函数def函数名(形参列表):函数体return返回值# 可选2调用函数# 不接收返回值函数名(实参)# 接收返回值res函数名(实参)关键规则函数必须先定义后调用只定义不调用内部代码不会执行。3. 函数参数详解形参实参定义时括号内是形参占位符调用时传入的是实参真实数据一一对应。# beg、end是形参defcalcSum(beg,end):pass# 1、100是实参calcSum(1,100)Python是动态类型语言形参不需要指定数据类型同一个函数可以传数字、字符串、布尔值。默认参数给形参设置默认值调用时不传该参数会自动使用默认值带默认值的参数必须放在无默认参数后面。defadd(x,y,debugFalse):ifdebug:print(f调试x{x}, y{y})returnxyprint(add(10,20))# 不传debug默认Falseprint(add(10,20,True))# 手动开启调试关键字参数调用时显式指定参数名不用严格遵守定义顺序deftest(x,y):print(x,y)test(y100,x200)# 打乱顺序传参不会出错4. 返回值returnreturn代表函数结束执行到return直接退出函数支持返回多个值底层自动封装为元组不想接收的返回值可用_忽略。defgetPoint():return10,20a,bgetPoint()_,bgetPoint()# 忽略第一个返回值5. 变量作用域局部变量函数内部定义仅函数内生效外部访问报错全局变量函数外定义全文件可见修改全局变量必须加global关键字否则会新建局部变量x20# 全局变量deftest():globalx x10# 修改全局xtest()print(x)# 输出10补充for/if/while不会创建新作用域循环内定义的变量外部也能访问。6. 函数嵌套与递归嵌套调用函数内部调用其他函数执行顺序遵循调用栈先进后出递归函数调用自身属于特殊嵌套。递归必备两个条件终止条件防止无限递归栈溢出每次调用参数向终止条件靠近。阶乘递归示例deffactor(n):ifn1:# 终止条件return1returnn*factor(n-1)print(factor(5))# 120开发建议递归代码简洁但容易栈溢出循环执行效率更高复杂场景优先循环。二、列表元组序列容器存一组数据类比理解列表list[]散装辣条可随意增删修改元素元组tuple()密封包装辣条创建后固定不能修改。1. 列表常用操作创建列表a[]# 空列表alist()a[1,hello,True]# 支持不同类型元素下标、切片下标从0开始负数下标代表倒数第N个切片[start:end:step]前闭后开区间step为负可反转列表。alist[1,2,3,4,5]print(alist[-1])# 5print(alist[1:3])# [2,3]print(alist[::-1])# [5,4,3,2,1] 反转列表增删改查alist[1,2,3]# 新增alist.append(4)# 尾部添加alist.insert(1,99)# 指定下标插入# 查询print(2inalist)# 判断元素是否存在print(alist.index(2))# 获取元素下标# 删除alist.pop()# 删除末尾alist.pop(1)# 按下标删alist.remove(2)# 按值删除# 拼接alist[5,6]# 生成新列表alist.extend([5,6])# 原地扩展原列表2. 元组特性元组支持读操作下标、切片、遍历、in、拼接不支持增删改适用场景数据不希望被修改、作为字典key列表不可哈希不能做key。函数多返回值底层默认是元组defgetPos():return10,20print(type(getPos()))# class tuple三、字典dict键值对映射快速查找字典是key-value键值对结构类似现实字典通过key快速匹配value适合一对一映射场景学号-学生、姓名-分数。基础用法# 创建字典stu{id:1,name:张三,score:90}# 查key是否存在print(nameinstu)# 获取值print(stu[name])# 新增/修改keystu[age]18stu[score]95# 删除stu.pop(age)# 遍历forkinstu:print(k,stu[k])# 批量获取key/value/键值对print(stu.keys())print(stu.values())print(stu.items())字典key限制key必须是可哈希不可变类型数字、字符串、元组列表、字典可变无法计算哈希值不能作为key。四、文件操作持久化存储数据变量只存在内存程序关闭数据丢失文件保存在硬盘实现数据持久化。1. 打开模式r只读文件不存在报错w只写打开清空原有内容a追加写原有内容保留末尾新增。2. 基础读写手动close# 写入文件fopen(test.txt,w,encodingutf8)f.write(Python学习笔记)f.close()# 读取文件fopen(test.txt,r,encodingutf8)contentf.read()print(content)f.close()踩坑点Windows默认GBK编码UTF-8文件读取乱码必须手动指定encodingutf8。3. 推荐with上下文管理器自动关闭文件避免忘记close导致打开文件过多报错# 读取文件withopen(test.txt,r,encodingutf8)asf:linesf.readlines()# 按行读取为列表forlineinf:# 逐行循环读取print(line,end)五、学习总结函数解决代码重复掌握定义、参数、返回值、作用域、递归序列容器列表可变用于动态数据元组不可变用于固定数据字典键值对快速查询key只能是不可变类型文件持久化存储优先使用with语句注意编码统一。这四块是Python后端、爬虫、数据分析的底层基础所有复杂项目都会反复用到。建议看完每一节后手写对应代码运行踩一遍报错才能真正吃透细节。