推导式:一句话构建数据结构
推导式是极具特色的“语法糖”用一行代码创建列表、字典、集合的简洁语法,它能替代多行循环,让代码更简洁高效
输入源:range list tuple set dict
输出源:list tuple set dict
推导式格式:
表达式 for 变量 in 输入源 if 条件
表达式 for 变量 in 输入源 if 条件 for 变量 in 输入源 if 条件(嵌套内容拓展)
列表(list)推导式
[表达式 for 变量 in 输入源 if 条件]
集合set推导式
{表达式 for 变量 in 输入源 if 条件}
字典(dict)推导式
{k_表达式: v_表达式 for 变量 in 输入源 if 条件}
元组(tuple)推导式
(表达式 for 变量 in 输入源 if 条件)
函数:一次定义多次调用
定义
def function_name(arg1, arg2=default,*/**arg3):
#位置 默认 不定长(元组/字典)
封装代码块
调用
function_name(arg)
return 返回值 如果函数内部没有显示写return写返回值 那函数的返回值为None
return 不加返回值 结束当前函数 停止函数 一般会放在一个逻辑结构的最后一行
函数参数顺序:
1. 位置参数+ 默认参数顺序:位置参数 → 默认参数
2. 位置参数+不定长参数顺序:位置参数 → 不定长位置参数
3. 默认参数+不定长参数顺序:位置参数 → 默认参数 → *args(不定长位置参数)
值传递与引用传递
值传递: 传递的是数值,适用于实参类型为不可变类型 (int,float,bool,str,tuple)
引用传递: 传递的是地址,适用于实参类型为可变类型 (list,set,dict,class)
值传递:用于保护原始数据不被意外更改
引用传递:原地修改实现高效的数据共享
主函数(程序入口)
if name == 'main': main+enter
案例:ATM自动提款机
文件操作
File文件 Output 写
# 安全写出到文本文件内容
with open('d:\\data.txt',mode='w',encoding='utf-8')as f: #a
f.write(content\n)
f.write(content\n)
# 自动释放资源,无需手动 f.close()
file 文件input读
# 安全读取文本文件内容
with open('d:\\data.txt',mode='r',encoding='utf-8')as f:
content = f.read()#全文 str
readline str
# content = f.readlines() #所有行list
print(content)
# 自动释放资源,无需手动 f.close()
with 语句(上下文管理器)可自动接管文件资源的生命周期。无论代码是否正常执行或中途抛出异常,
系统都会自动调用 close() 方法释放资源
python中的库分类: 标准库 扩展库 自定义库
在python中 使用 import 或者 from ...import 来导入相应的库
import csv #其文件以纯文本形式存储表格数据 写入磁盘后数据会长期保留 具备永久化存储的物理能力
csv.reader(file)逐行读 list[str]适用于无表头
csv.writer(file):列表形式写支持 单行 多行
writerow(row)(单行)
writerows(rows)(多行)。
csv.DictReader(file):字典形式读,
键为列名(默认首行即字段名)支持按列名访问
csv.DictWriter(file, fieldnames):字典形式写,
需指定 fieldnames,支持
writeheader()(写表头)
writerow() / writerows()(写行)
异常
程序崩溃
采用 try-except-finally 结构建立“安全网”。将可能引发错误的业务代码放入 try 块,
针对性捕获特定异常,并利用 finally 确保关键的清理工作(如关闭网络连接)总能执行。
try:
num = int(input("请输入整数: "))
error=100/num
print("ok")
except ValueError:
print("您输入的不是数字,请再次尝试输入!")
except ZeroDivisionError:
print("除数不能为零")
except Exception as e:
print("未知错误")
finally:
一定执行的代码
自定义异常使用rasie语句抛出异常
raise Exception(“提示”)
num1=int(input("请输入整数"))
if num1 % 100 != 0 or num1<0:
raise exception("必须是100的倍数 且 必须不能是负数")
面向对象
面向对象是一种软件开发方法,核心是把现实事物抽象成“对象”,通过对象之间的交互来解决问题
类是抽象的,定义了对象共有的属性和行为;而对象是具体的,是类的实例化产物 先有类 才有对象
三大核心特征:封装、继承、多态
面向过程:采购->备菜->点单->烹饪->上菜->结账
面向对象:采购(厨师)->备菜(厨师)->点单(服务员)->烹饪(厨师)->上菜(服务员)->结账(服务员)
类 :功能封装
对象:功能使用
类 :功能封装
封装
封装是一种将数据和操作数据的方法(函数)结合在一起,形成一个独立的对象的概念。
封装有助于保护数据不被外部代码直接访问和修改,同时提供了一种方法来控制对这些数据的访问
属性:静态特征 类似变量存储数据
方法:动态特征 类似函数封装功能
构造方法(魔法方法 /魔术方法):创建对象 初始化对象的成员 为属性赋值
如果不显示声明构造方法 那么 系统会自动提供一个无参构造 方便用户创建对象
如果显示的声明了构造方法 那么系统将不会继续提供无参构造
创建对象格式
对象名=类名()
存值 取值调用属性
对象名.属性名(变量名)=值
对象名.属性名
调用方法 函数
对象名.函数名/方法名()
继承
建立类之间的层级关系,子类自动获取父类的属性和方法,实现代码复用,提高开发效率
父类的 给予 子类的 一种获取
继承格式
子类继承指定继承父类
父类
将子类中共有的一些属性和方法抽取出来放到一个公共的位置
多态
前提: 1.必须要有继承关系
2.必须要子类重写父类的方法
同一操作作用于不同对象产生不同的执行结果。不修改原有代码即可扩展功能,
增强了程序的灵活性,多态主要通过继承和函数重载/重写(方法重写)来实现
time / datetime 模块
python 中 处理日期和时间的标准库模块
time 模块: 偏向底层,适合简单的计时、延迟操作以及时间戳与结构化时间的转换。
datetime 模块:面向对象,提供更高级的日期计算、格式化和时区处理功能,是日常开发中处理业务逻辑的首选。
time
t1=time.localtime() #结构化时间
字符串与time 互转(格式化)
字符串 ->时间:strptime (string parse time)
#2026-06-10 日期格式转字符
str1=time.strptime(str, "%Y-%m-%d %H:%M:%S")
时间 -> 字符串:strftime (string format time)
t2=time.strftime('%Y-%m-%d',t1)
t1=datetime.datetime.now() #获取当前时间
datetime
now = datetime.now()
字符串 ->时间:strptime (string parse time)
datetime.datetime.strptime(str1, "%Y-%m-%d %H:%M:%S")
时间 -> 字符串:strftime (string format time)
datetime.datetime.strftime(dt1, '%Y-%m-%d')