python
2025-03-26 23:23:34 0 举报
AI智能生成
核心内容: 这段Python代码的功能是实现一个简单的用户信息管理系统。系统允许用户添加、删除、更新和显示存储在内存中的用户记录。代码通过定义一系列函数来完成这些操作,并使用字典类型来组织和存储用户数据。 文件类型: "user_management.py" 修饰语: 功能齐全、交互友好、模块化、用户友好界面、易于维护。
作者其他创作
大纲/内容
零基础学 Python
一、Python 基础
(一)Python 简介
Python 的历史
Python 的特点
Python 的应用场景
(二)Python 安装与环境配置
Windows 系统安装
Mac 系统安装
Linux 系统安装
IDE 选择与配置(如 PyCharm、VSCode 等)
(三)Python 基本语法
注释
缩进
变量与数据类型
运算符
二、数据类型
(一)数字类型
整数
浮点数
复数
(二)字符串
字符串的定义与操作
字符串方法
(三)列表
列表的定义与操作
列表方法
(四)元组
元组的定义与操作
元组方法
(五)字典
字典的定义与操作
字典方法
(六)集合
集合的定义与操作
集合方法
三、流程控制
(一)条件语句
if 语句
if-elif-else 语句
(二)循环语句
for 循环
while 循环
循环控制(break、continue、pass)
四、函数与模块
(一)函数定义与调用
函数的基本定义
参数传递
返回值
(二)匿名函数
lambda 函数
(三)模块
模块的创建与导入
常用内置模块(如 math、random、os、sys 等)
五、面向对象编程
(一)类与对象
类的定义
对象的创建
构造函数与析构函数
(二)继承
单继承
多继承
(三)多态
方法重写
方法重载
(四)封装
私有属性与方法
属性的 getter 和 setter 方法
六、文件操作
(一)文件的打开与关闭
open 函数
close 方法
(二)文件的读写操作
read、readline、readlines 方法
write、writelines 方法
(三)文件指针定位
seek 方法
tell 方法
(四)with 语句操作文件
使用 with 语句的优势
七、异常处理
(一)异常的基本概念
异常的类型
异常的抛出
(二)异常的捕获与处理
try-except 语句
try-finally 语句
raise 语句
八、标准库
(一)常用标准库
os 模块
sys 模块
math 模块
random 模块
time 模块
datetime 模块
json 模块
(二)第三方库的安装与使用
pip 的使用
常见第三方库(如 numpy、pandas、matplotlib 等)
九、第三方库
(一)numpy
numpy 的安装与导入
numpy 数组的创建与操作
numpy 的数学函数
(二)pandas
pandas 的安装与导入
DataFrame 的创建与操作
数据的清洗与分析
(三)matplotlib
matplotlib 的安装与导入
基本绘图函数
图形的定制与美化
(四)requests
requests 的安装与导入
HTTP 请求的发送与响应的处理
(五)BeautifulSoup
BeautifulSoup 的安装与导入
HTML 的解析与操作
十、项目实战
(一)简单项目
猜数字游戏
石头剪刀布游戏
简单计算器
(二)复杂项目
爬虫项目
数据分析项目
Web 开发项目
十一、拓展学习
(一)Python 高级特性
装饰器
迭代器
生成器
上下文管理器
(二)Python 性能优化
代码优化
多线程与多进程
并发编程
(三)Python 在不同领域的应用
Web 开发(如 Django、Flask 等框架)
数据科学与机器学习(如 scikit-learn、TensorFlow 等框架)
自动化运维
网络爬虫
游戏开发
Python
python基础部分
Python的语法基础
变量
命名规则
首字符是字母或下划线
下划线通常用来表示内建标识符
_XXX 通常表示私有的
其余为字母 数字,下划线
大小写敏感
全大写的是符号常量
关键字
表达式
算术运算
位运算
比较运算
逻辑运算
赋值
变量第一次赋值,同时获得类型和值
Python是动态的强类型语音
不需要显示声明,根据值确定类型
以引用的方式实现赋值
将一个引用指向对应的内存单元
增量赋值
多重赋值
PI = pii = 3.14
多元赋值
叫做元组
PI, r = 3.14159, 3
基本运算符
算数运算符
乘方 **,如3**3 为27
其他加减乘除
/ 传统除法
// 整除,舍弃小数点后数字
% 取余数
比较运算符
数值运算直接比较大小
字符串,比较ASCII码
逻辑运算
not
# a が偽であれば真
and
一个false 则为false
or
一个true则为true
字符运算
r/R 用于不希望转义字符起作用的地方
u/U 转为unicode
错误
f = open('c:¥dd.phy','w')
正确
f = open(r'c:¥dd.phy','w')
f = open('c:¥¥dd.phy','w')
上述|¥为转义字符
位运算
~a # ビット反転
a & b # AND:論理積(aもbも1のビットが1)
a | b # OR:論理和(aまたはbが1のビットが1)
a ^ b # XOR:排他的論理和(aまたはbが1のビットが1)
a > b # b ビット右シフト
模块与函数
函数
通过dir(__builtin__)查看内建函数
如 abs(x), type(x)
模块
逻辑上的一个组织形式,比如math 这个库
在使用非内建函数时,需要将对应的文件导入
比如使用floor函数时
用Import math导入math库
然后可以使用了,math.floor(4.56)
用help(math)打印所有math内部的函数和变量
包
库
一组有相关功能的模块的集合
python的一大特色就是有大量的标准库 和 第三方库
装饰器
作用域
Python中特有的作用域
这种作用域是Python中独有的,例如在for循环中,为一个变量赋值,在for循环结束后,这个变量仍然能存在
分支主题
局部作用域(Local)
函数内部定义的变量在该函数外打印的时候将出现未定义错误
分支主题
闭包函数外的函数中(Enclosing)
这种作用域是存在一个嵌套函数中的作用域
分支主题
全局作用域(global)
全局作用域的变量可以在程序全局中使用
作用域关键词
global
可以让指定一个变量为全局变量,当在一个函数中定义一个和全局变量相同的变量并赋值时,由于作用域的原因,即使定义的这个个变量值发生了改变,同名的全局变量也不会发生改变,当我们想要改变这个全局变量的时候,我们就可以在变量名前加上global
分支主题
nonlocal
该关键字可以使得Local作用域的变量去修改Enclosing的变量
分支主题
写一个计时装饰器
分支主题
进程
什么是进程?
进程解答
正在执行中的程序称为进程。进程的执行会占用内存等资源。多个进程同时执行时,每个进程的执行都需要由操作系统按一定的算法(RR调度、优先数调度算法等)分配内存空间
僵尸进程
当一个子进程结束后,父进程还没有结束,这个子进程就会变为僵尸进程,若在父进程没有通过wait系统调用来读取这个子进程的退出状态, 这个子进程就会一直维持僵尸进程状态
多进程
进程池
进程池可以通过mutiprocessing中的Pool类实现,在使用Pool类的时候,也可以使用apply同步执行,或者使用apply_async进行异步执行, 也可以通过Semaphore来限制进程池中的进程数量
进程间通信
Queue
队列,可以实现不同进程之间的数据交换,各个进程可以把信息放到队列中,也可以从队列中取出数据,信息的存放与取出是按照先进先出的方式进行的
Pipe
是一种管道,有两端,一端发送数据,另一端接受数据,但是在同一时间每一端只能进行发送或者接受操作
Manager
可以实现进程间的数据共享, 使用场景,比如在使用进程池的时候想要实现进程间的通信,可以使用Manager().Queue(),但是在直接使用Queue的时候,程序就会报错
进程锁
进程锁的作用是为每一个共享资源创建一个Lock对象,当你需要访问这些资源的时候,需要调用acquire()方法来获取锁对象(如果在获取锁对象的时候,其他锁已经获取到该锁的时候,则需要等待其释放)
线程
什么是线程
线程是应用程序中工作的最小单元,但是在使用协程的时候,还可以将一个线程切分为多个微线程, 在Python中线程主要使用到的类有threading中的Thread, Lock, Rlock, Semaphore, TImer
线程与进程之间的关系与不同
一个进程最少有一个线程,也可以有多个线程
线程创建会比进程创建更快,开销较少
多线程
线程池
threading类库中和multiprocessor不同,它里面并没有Pool类,要想实现线程池,最常使用的方法是将线程放进一个队列中,这个队列使用到的是Python中自带的queue().Queue()。
线程锁
由于Python中存在GIL,会使得同一个进程中的线程只能利用一个CPU,所以线程之间会互相争抢资源,而且由于线程之间是可以共享资源的,会导致在操作统一资源后,导致后续数据紊乱。这个时候就需要用到线程锁,用到的类是threading中的Lock类,原理和进程锁一样
GIL全局解释性锁
CPython在执行多线程的时候并不是线程安全的,所以在设计初期,为了程序的稳定性,加入了GIL,从而确保任何时候都只有一个Python线程启动,也正是因为GIL,使得基于CPython解释器的多线程速度降低,也正是因为GIL,Python的多线程无法利用多核CPU
多线程IO密集型,计算密集型
在存在GIL的情况下,会影响计算密集型的执行效率,原因是由于计算密集型会占用系统资源,当一个线程没完成时另一个线程无法进行,再加上线程切换的耗时时间,在计算密集型的情况下,多线程的效率往往比单线程还要低
IO密集型收到GIL的影响相对于计算密集型会小很多,IO密集型主要实在输入阶段耗费时间,其余阶段大部分线程都在等待。
协程
什么是协程
协程又称微线程,微线程可以将线程切分为多个微线程,在他执行的时候可以将当前程序中断然后去执行别的子程序,之后再回来执行之前的子程序,但是由于协程记录了之前的上下文,可以直接返回到之前的位置继续执行
协程的实现方式
yield/send
理解yield/send协程,可以使用消费者生产者模型来理解,使用yield可以返回一个值,使用send可以给yield传一个值,并使得yield当前的值更改为send传的值,之后再进行yield后面的操作
greenlet
greenlet可以通过switch方法来在想要切换到另一个方法的位置进行切换,缺点是需要手动切换
gevent
gevent可以通过joinall方法将所有想要执行的方法放进去,使用spawn执行该方法,但是要想实现gevent自动切换,需要导入 from gevent import monkey;monkey.patch_all()
同步/异步
同步是必须等待一个函数返回结果才能去执行另外的函数,就好比是,一个人在烧水,必须等水烧开了才去干其他事情,或者每个一段时间去看水开没有
异步是在程序执行的时候,可以不用自己去等待结果而直接去执行其他的操作,通过回调,消息通知来通知已完成,举例就是在烧水的时候我可以去干其他的事情,等待水壶发出的声音来告诉我水已经烧开了
阻塞/非阻塞
阻塞是指一个程序在执行到某个步骤的时候,因为某种原因不能继续往下执行,程序选择原地等待,就会产生阻塞,例如在socket网络编程中,监听的时候,如果没有客户端连接进来,就会在监听位置发生阻塞
非阻塞就是在本来会产生阻塞的位置,程序可以直接去执行其他程序
并行与并发
并行是指在不同实体上,两个或多个事件同时发生,例如两台咖啡机两队人买咖啡的场景,并行可以同时发生多个并发事件
并发是指在同一实体的两个或者对个事件在同一时间间隔发生的,例如有一台咖啡机排了两队人买咖啡的场景,而并发不一定并行
Python是一种动态强类型语言
动态强类型是什么意思?
强类型/弱类型
语言类型系统的类型检查的严格程度
强类型
java和Python是强制类型定义的。如果你有 个整数,如果不显示地进行转换,你不能将其视为一个字符串。
弱类型
一种类型可以被忽略的语言,与强类型定义相反。VBScript是弱类型定义
的。在VBScript中,可以将字符串 '12' 和整数 3 进行连接得到字符串 '123',
然后可以把它看成整数 123,而不需要显示转换。
动态/静态
变量与类型的绑定方法
动态
动态类型语言是指在运行期间才去做数据类型检查的语言
在编程的时候,不用给它指定数据类型,在第一次赋值的时候,会记录其数据类型
如Ruby 和 python
静态
在编译期间就进行数据 检查,所以在编程的时候,就指定数据类型
如 C/C++,java等
Django框架
ORM
restframework
Log
Middleware
上线部署
负载均衡
Nginx配置
uWSGI配置
mysql主从
底层基础
HTTP协议, TCP/IP协议
HTTP
说说你对HTTP协议的理解
HTTP/HTTPS/SSL
HTTP
http是超文本传输协议,明文传输
子主题 2
HTTPS
SSL
TCP/IP协议
数据结构
堆栈
链表
二叉树
几种排序方法
机器学习/数据分析
numpy
numpy基础API
使用numpy处理数据库中的数据
分支主题
pandas
sklearn
爬虫知识点
非框架爬虫
爬取非动态数据
爬取动态数据
爬取Ajax加载的数据
爬取渲染好的页面
selenium
splash
爬虫框架
Scrapy
Pyspider
反爬对策
User-Agent
IP代理池
Cookie池
验证码识别
Python 爬虫技术体系
一、采集流程
(一)确定目标
明确数据采集的目的和需求,定义所需数据的类型、范围和精度。
(二)选择工具
根据采集目标和数据源的特点,选择合适的采集工具和技术。
(三)发送请求
向目标服务器发送HTTP请求,获取数据。
(四)解析内容
对获取到的HTML/XML等格式的内容进行解析,提取有用信息。
(五)存储数据
将解析后的数据存储到合适的存储介质中,如数据库、文件等。
二、文本处理
(一)文本清洗
(二)文本转换
(三)文本分析
三、网页内容提取
(一)HTML/XML解析器
**lxml**:高效的HTML和XML解析库,支持XPath和CSS选择器。
**Beautiful Soup**:提供简洁的接口,方便解析HTML和XML文档。
**html5lib**:纯Python实现的HTML解析器,兼容HTML5标准。
(二)选择器
**XPath**:强大的节点选择语言,用于在XML文档中查找信息。
**CSS选择器**:基于HTML元素的类、ID等属性进行选择。
四、浏览器自动化与反爬
(一)浏览器自动化工具
**Selenium**:支持多种浏览器,可模拟用户操作。
**Playwright**:由微软开发,功能强大,支持浏览器自动化和测试。
(二)反爬策略
**设置请求头**:模拟正常浏览器请求,避免被识别为爬虫。
**使用代理IP**:隐藏真实IP地址,避免被封禁。
**控制请求频率**:避免短时间内大量请求触发反爬机制。
五、特定格式文件处理
(一)PDF文件
**PyPDF2**:用于PDF文件的读取、合并、分割等操作。
**pdfminer**:从PDF文档中提取文本和信息。
(二)Word文档
**python-docx**:创建和修改Microsoft Word文档。
(三)Excel文件
**openpyxl**:读取和写入Excel 2010 xlsx/xlsm文件。
**pandas**:提供高效的DataFrame结构,方便数据处理和分析。
六、自然语言处理
(一)分词与词性标注
**jieba**:中文分词工具,支持多种分词模式。
**hanlp**:功能全面的自然语言处理工具包,包括分词、词性标注等。
(二)命名实体识别
(三)情感分析
Python 学习路径指南
学习内容
基础(要求:熟练,写基础代码时不用查手册)
**基础语法**:运算符和表达式、数据结构、控制流
**函数**:函数定义、参数传递、返回值
**模块**:模块创建与导入、常用内置模块(如 `re`、`datetime`、`os`、`os.path`、`glob`、`shutil`、`sys` 等)
**异常**:异常处理机制
**面向对象编程**:类与对象、继承、多态、封装
标准库(要求:熟悉,掌握常用方法,不常用方法用到时能够迅速查手册)
**文件操作**:`open`、`read`、`write`、`close` 等
**系统相关**:`os`、`sys`、`shutil` 等
**网络编程**:`socket` 等
**多线程与多进程**:`threading`、`multiprocessing` 等
**子进程**:`subprocess` 等
**日志**:`logging` 等
**数据处理**:`xml`、`json`、`csv` 等
**其他**:`unittest`、`traceback`、`winreg` 等
学习资源
基础
**书籍**
《Python 简明教程》:适合零基础,深入浅出地介绍 Python 的各个主要方面
《Core Python Programming》:从基础到深入,全面介绍 Python 语言的方方面面和应用,类似参考书
《Dive into Python》:从基础开始说起,结合各种技巧,适合对 Python 有基本了解(有中文版)
《可爱的 Python》:从基础到深入介绍 Python 的主要方面,适合零基础
《Python Programming on Win32》:适合对 Python 主要方面有了解
进阶与参考
**书籍**
《Python Cookbook》:包含 Python 语言各种有趣的技巧,适合对 Python 有基本了解(有中文版)
**文档**
《Python Documentation》:Python 官方自带的手册,功能最全
高级
**书籍**
《Python Cookbook》:进阶技巧和案例分析
其他高级主题相关书籍
网站
分支主题
分支主题
分支主题
工具
Eclipse + Pydev
UliPad
第三方库(要求:了解,知道相关模块的功能和基本使用,实际用到时能够快速查手册)
数据库
`Reportlab`、`PyGreSQL`、`MySQLDB`、`adodb`、`Dpkt` 等
网络
`Scapy`、`Pycap`、`WinPcap`、`PyPcap` 等
Windows 相关
`Pythonwin` 等
文档
`xlwt` 等
Web
`Web2PY`、`Selenium` 等
调试
一般排错
IDE Debug
0 条评论
下一页