# Python 学习路线 by 程序员鱼皮
在看路线前,建议大家先通过以下视频了解几个问题:
- Python 为什么这么火?
- 为什么都在说学 Python 找不到工作?Python 真香么?
- 我要学 Python 么?
- 怎么快速学习?
视频地址:https://www.bilibili.com/video/BV133411C7u5/ (opens new window)
# Python 为什么火了?
有很多原因,列举几点:
- 语法简单易学,其他语言 5 行代码才能实现的东西,Python 一行搞定!可以少写很多代码,因此不少同学拿 Python 刷算法题(但注意要理解算法本身哦)。
- 类库生态丰富,想做什么功能基本都有现成的代码,拿来直接用就行,无比方便!
- 免费开源,感兴趣、有能力的同学可以自己去研究源码。
- 其他特性,比如跨平台、可扩展等。
- 作为数据科学、人工智能的首选语言,踩到了时代的风口。
于是乎,Python 被推向了神坛,甚至在 2021 年 10 月的编程语言排行榜中,Python 登上了第一位!
但就是这样一门 “永远的神” 的编程语言,却在网上被口口相传说:学了 Python 找不到工作!
哎,为啥呢?
# 为什么 Python 不适合找工作?
一方面是,大多数的企业,都不用 Python 来开发应用。
因为 Python 的运行速度太慢了,别说跟底层的 C++ 比了,Java 都能甩它几条街!而且这和语言本身的设计实现有关,所以哪怕你再出什么技术去优化它的性能,也终究有个瓶颈,世界上最好的语言 PHP 也是一样。
而对企业来说,性能 会直接影响用户体验和机器成本,尤其是在这个信息爆炸、大家都在追求性能的时代,Python 在应用开发领域的地位就很尴尬,而开发岗又正好是程序员中占比极高的岗位。
另一方面,虽然 Python 的应用场景很多、相关岗位也不少,又是什么 AI、数据科学的主流语言是吧,未来很美好。但是,这些前沿技术的难点并不是 Python 语言的代码本身,而是算法和思想。Python 只是一个调包、把你思想表达出来的工具而已。所以这些前沿岗位的门槛远比你入门 Python、或者听培训机构画饼时要高的多,算法岗位、大厂的产品岗真就是神仙打架,而且研究生居多。
# 学习目标
既然这样,那我还要不要学 Python 呢?
我认为:必须要学!
但是,一定要先思考自己的学习目标,目标不同,对 Python 的学习态度和投入的时间也不同。
如果想找开发岗位的工作,像上面说的,不建议把 Python 作为你的主语言,而是把它当做你的副武器。只需简单学学 Python 基础,就可以编写 Python 脚本来自动化办公、提高工作效率、做一些小工具了,性价比很高。
如果说编程语言是工具,那 Python 是对这句话的完美诠释。 多会用一个神器,谁不爱呢?
如果你想找其他岗位的工作,比如运维、测试、数据分析、产品经理、大数据、爬虫、人工智能、图像处理、多媒体处理、算法研究,当然也可以,只是如果以这些岗位为目标,除了要打好 Python 基础外,更重要的是理解对应领域的思想、方法和实践,而不是只会引库调包。
如果你是初学编程或者出于好奇学编程,我也建议你学 Python,好玩、能学下去、能培养兴趣,这些对初学者非常重要,有了兴趣之后,再学别的语言就会如鱼得水。
# 学习建议
对于初学者和非 Python 岗位的从业者,就把 Python 当工具学,了解下基础语法和常用类库,需要写 Python 脚本时,能利用搜索引擎和文档写出(或者复制)代码就行。只要你学过其他编程语言,上手 Python 真的都很容易,3 - 7 天就能学会。
建议学习时多写些小例子,比如 Python 处理表格、Python 处理 PDF 等,感受 Python 类库的强大就完事儿~
# 学习路线大纲
折叠了一部分,还是老长,思维导图获取见文末 :
# 学习路线
# 基础
- Python 安装
- 开发工具
- PyCharm
- Sublime
- VS Code
- 变量
- 定义变量
- 关键字
- 命名规则
- 基本数据类型
- 类型转换
- 运算符和表达式
- 流程控制
- 条件分支
- 循环
- 基本数据结构
- 字符串
- 列表
- 元组
- 集合
- 字典
- 函数
- 定义
- 参数传递
- 作用域
- lambda 表达式
- 常用内置函数
- ⭐ 面向对象编程
- 类和对象
- 三大特性
- 封装
- self
- 属性
- 方法
- 类方法
- 实例方法
- 静态方法
- 访问控制
- 继承
- 单继承
- 多继承
- 多态
- 方法重写
- 封装
- 运算符重载
- 装饰器
- 反射
- 模块
- 导入模块
- 常用模块
- 文件处理
- 日期时间
- 包
- 导入包
- 生成包
- 异常处理
- 捕获异常
- try ... else ... finally 结构
- 自定义异常
- 文件操作
- 文件开闭
- 文件读写
# 进阶
- 函数进阶
- 闭包
- 匿名函数
- 生成器函数
- 装饰器
- 高阶函数
- 正则表达式
- 数据库编程
- 数据库基础
- SQL 编写
- 查询
- 聚合
- 分组
- 关联
- 排序
- 事务
- 数据库设计
- 数据库调优
- 并发编程
- 同步和异步
- 阻塞和非阻塞
- 多线程
- 多进程
- 协程
- 并发类库
- 网络编程
- 网络基础(七层模型、IP)
- 网络协议(TCP、UDP、HTTP、HTTPS、FTP、DNS)
- WebSocket
# web 开发
- Django 框架
- 安装与 Demo
- MVT 分层
- 模型
- 数据库基础
- ORM
- 单表查询
- 多表查询
- 聚合查询
- 视图
- 模板
- 模板语法
- 静态资源
- 路由
- Django Admin 管理工具
- 测试
- 会话
- 鉴权
- 文件上传
- 中间件
- 高级特性
- 分页
- 缓存
- 本地缓存
- Redis 分布式缓存
- 序列化
- 信号
- celery 任务调度
- Restful API 开发
- 概念
- 数据序列化
- Django Rest Framework
- 部署
- 项目实战
- 前端基础
- HTML
- CSS
- JavaScript
- Flask 框架
# 爬虫
- 概念
- 合法性
- 数据抓取
- 常用网络协议(http / https)概念
- 请求
- 请求头
- 请求参数
- 请求类型
- 响应
- 响应头
- 响应参数
- requests 模块
- urllib 模块
- 模拟登陆
- 静态 / 动态网站抓取
- 无头浏览器
- selenium
- puppeteer
- 数据解析
- 常用标签
- BeautifulSoup
- 正则表达式
- xpath
- 数据导出
- 文件
- Excel
- CSV
- 数据库
- MongoDB
- MySQL
- 中间件
- Redis
- 文件
- Scrapy 框架
- 核心概念
- 命令行工具
- Spiders
- Selectors
- Items
- Item Loaders
- 管道
- Scrapy Shell
- Link Extractors
- 调度器
- 分布式爬虫
- 部署
- 核心概念
- 并发异步爬虫
- aioHttp
- asyncio
- 高级
- IP 代理
- 验证码识别
- APP 抓取
- 增量式爬虫
- 项目实战
- 反爬虫
- 请求头限制
- 验证码
- 黑白名单
- 封禁 IP
- 数据加密
- 数据混淆
- 行为分析
# 自动化运维
- Linux 环境
- Shell 脚本编写
- 脚本管理
- 脚本发布
- Python 运维库
- 常用运维工具
# 数据分析(数据科学)
- 环境搭建
- Anaconda
- Conda
- Miniconda
- Jupyter Notebook
- 常用数据结构
- 常用类库
- Numpy
- 数组
- 索引
- 切片
- 多维数组
- 函数
- Pandas
- Series
- DataFrame
- 索引
- 对齐
- 函数
- 统计
- Numpy
- 数据处理
- 数据清洗
- 层次化索引
- 数据连接
- 数据合并
- 分组聚合
- 轴向旋转
- 数据可视化
- matplotlib
- seaborn
- pyechart
# 算法(人工智能)
鱼皮自己没怎么接触人工智能,结合网上很多大神的资料整理而成,也有一定参考意义。
- 数学基础
- 高等数学
- 线性代数
- 概率论
- 统计分析
- 机器学习
- 特征工程
- 模型
- 模型分类
- 模型评估
- 模型训练
- 模型调优
- 常用算法
- 监督与无监督学习
- 回归(有监督)
- 线性回归
- 决策树
- 集成算法
- 分类(有监督)
- 逻辑回归
- 决策树
- 支持向量机
- 集成算法
- 贝叶斯算法
- 聚类(无监督)
- k-means
- dbscan
- 降维
- 主成分分析
- 线性判别分析
- 进阶
- GBDT 提升算法
- lightgbm
- EM 算法
- 隐马尔科夫模型
- 多因子模型
- 常用库
- Scikit-learn
- 量化交易策略
- 深度学习
- 数据预处理
- 算法
- 神经网络
- 卷积神经网络
- 递归神经网络
- 对抗生成网络
- 序列网络模型
- 常用算法
- 框架和平台
- Tenserflow2
- Pytorch
- Keras
- Caffe
- 自然语言处理
- 图像处理
- 计算机视觉
# 常用类库
Python 能被广泛应用,很大程度上是因为其丰富的类库,就是他人提前写好并封装的代码。基本你要做什么东西都能找到对应的类库,直接看文档用就行了,大大提高开发效率!
开源项目 awesome-python-cn
(地址:https://github.com/jobbole/awesome-python-cn) 和 awesome-python
(地址:https://github.com/vinta/awesome-python)已经帮大家整理了各方向的 Python 类库,数量非常多。鱼皮在此基础上筛选了一些相对优质的库,分享给大家。
# 通用
# 日期处理
- delorean:日期处理库
- pendulum:日期时间操作库
- dateutil:对标准 datetime 模块的强大扩展
# 终端优化
- IPython:功能丰富的交互式 Python 解析器
- Jupyter Notebook:基于网页的用于交互计算的应用程序
- Prettytable:生成美观的 ASCII 格式的表格
- Colorama:让终端具有颜色
- bashplotlib:在终端中进行基本绘图
- emoji:支持在 Python 终端输出表情
- Ipyvolume:在 Jupyter notebook 中可视化 3d 体积和字形
# 文本处理
- FlashText:高效的文本查找替换库
- furl:url 处理库
- pypinyin:汉字拼音转换工具
- simplejson:JSON 编 / 解码器
- JMESPath:JSON 查询语法库
# 其他
- Pipenv:Python 官方推荐的新一代包管理工具
- threading:自带的线程库
- multiprocessing:自带的多线程库
- Chardet:字符编码检测器
- logging:日志功能
- PySnooper:Python 调试工具
- sphinx:Python 文档生成器
- pyttsx3:文字转语音库
- PyWin32:提供和 windows 的交互
- shortuuid:生成唯一 uuid 的库
- more-itertools:支持迭代操作对象
- cryptography:密码学工具包
# 网络请求 & 解析
- requests:HTTP 请求库
- aiohttp:异步 HTTP 网络库
- scrapy:分布式网页采集框架
- pyspider:一个强大的爬虫系统
- BeautifulSoup:从 HTML 或 XML 文件中提取数据的库
- you-get:网页视频下载器
- wget:网页文件下载
- musicdl:Python 音乐下载器
# 文件处理
- openpyxl:Excel 读写库
- tablib:处理表格数据
- csvkit:用于转换和操作 CSV 的工具
- XlsxWriter:操作 Excel
- python-docx:操作 office word 文档
- PyPDF2:操作 PDF 文档
- pdfminer:从 PDF 文档中抽取信息的工具
- xhtml2pdf:HTML 转 PDF 工具
- WeasyPrint:可视化网页,并支持导出为 PDF
- html2text:将 HTML 转换为 Markdown 文档
- xmltodict:像处理 JSON 一样处理 XML
- moviepy:基于脚本的视频编辑模块
- eyeD3:操作音频文件的工具
- pyAudioAnalysis:音频特征提取分析
# 界面开发
- pyQT:跨平台的用户界面开发框架
- Turtle:交互式绘画库
- pyglet:跨平台界面及多媒体框架
- wxPython:Python 用户界面开发工具
- Pygame:一组用来开发游戏的 Python 模块
- Manim:Python 数学动画引擎
- progressbar:一个滚动条函数库
- progress:进度条输出
- tqdm:快速、可扩展的进度条
# 测试
- nose:测试框架
- faker:生成假数据
- PyAutoGUI:跨平台 GUI 自动测试模块
- coverage:代码覆盖率测量
- sqlmap:自动 SQL 注入和渗透测试工具
# Web 开发
- Django:Python 界最流行的 web 框架
- Django REST framework:用于开发 web api 的框架
- FastAPI:快速构建 web 应用程序
- flask:Python 微型框架
- Twisted:一个事件驱动的网络引擎
# 运维
- psutil:跨平台的进程和系统工具模块
- supervisor:进程控制管理系统
- sh:让 Python 支持 shell 脚本
- dnspython:DNS 工具包
- scapy:数据包处理库
- pexpect:在伪终端中控制交互程序
- paramiko:远程连接服务
- Ansible:IT 自动化平台
- SaltStack:基础设施自动化和管理系统
- watchdog:管理文件系统事件的 API 和 shell 工具
# 图像处理 & 计算机视觉
- Pillow:图像处理库
- kornia:计算机视觉库
- Opencv:开源计算机视觉库
- Mahotas:计算机视觉和图像处理库
- Luminoth:计算机视觉的深度学习工具集
# 数据分析 & 数据科学
- NumPy:数值计算工具包
- Pandas:主流的数据分析工具
- pyecharts:基于百度 Echarts 的数据可视化库
- Dash:快速构建 Web 数据可视化应用
- matplotlib:Python 2D 绘图库
- Seaborn:使用 Matplotlib 进行统计数据可视化
- python-recsys:实现推荐系统的库
- vaex:高速大数据处理库
- SciPy:算法和数学工具库
- blaze:NumPy 和 Pandas 的大数据接口
- statsmodels:统计建模和计量经济学
# 人工智能
- Tensorflow:谷歌开源的最受欢迎的深度学习框架
- keras:深度学习封装库,快速上手神经网络
- Pytorch:具有张量和动态神经网络,并有强大 GPU 加速能力的深度学习框架
- Caffe2:一个轻量、模块化、可扩展的深度学习框架
- scikit-learn:基于 SciPy 构建的机器学习 Python 模块
- PyMC:马尔科夫链蒙特卡洛采样工具
- mmdetection:深度学习目标检测工具箱
- imbalanced-learn:不平衡学习工具包
- XGBoost:分布式梯度增强库
- Gym:强化学习算法的工具包
# 自然语言处理
- NLTK:自然语言处理工具包
- Gensim:话题建模库
- Pattern:自然语言处理工具
- fuzzywuzzy:用于字符串模糊匹配、令牌匹配等
- TextBlob:为进行普通自然语言处理任务提供一致的 API
- PyFlux:时间序列处理库
- jieba:中文分词工具
# 大纲
(大纲图)
# 岗位
- 腾讯校招 Python 相关岗位:https://join.qq.com/post.html?keyword=python (opens new window)
- 岗位薪资查询:OfferShow 小程序
- 运维工程师
- Web 开发工程师(后端、全栈为主)
- 测试工程师
- 数据分析师
- 产品经理
- 算法工程师
- 机器学习
- 计算机视觉
- NLP
- 多媒体处理
- 大数据工程师
- 大数据开发
- 数据挖掘
- 网络爬虫工程师
- 技术研究员
# 资源
# 视频
# 零基础
- ⭐ 千锋教育 700 集零基础 Python 教程:https://www.bilibili.com/video/BV1R7411F7JV(非常全面,基础、web 开发、爬虫、数据分析、AI 基础都讲了,例子也很丰富)
- ⭐ 黑马程序员600集 Python 教程:https://www.bilibili.com/video/BV1ex411x7Em(比较全面,基于 Linux 环境学习,以 Python 基础 + 面向对象为重点,还包含一部分游戏开发)
- ⭐ Python 全栈开发教程:https://www.bilibili.com/video/BV1wD4y1o7AS(很纯粹的 Python 基础教程,案例多,适合快速入门)
- 小甲鱼 -《零基础入门学习Python》最新版:https://www.bilibili.com/video/av52080698(可惜,更新到一半就没了。。)
- 【麻省理工学院-中文字幕版】Python 和计算机科学导论公开课:https://www.bilibili.com/video/BV1ty4y1x7xP(适合外语不错的同学课外看,感受国外教学氛围)
- 阿里云 python 工程师学习:https://developer.aliyun.com/graph/python(有在线编程体验)
- 鱼皮公众号【程序员鱼皮】后台回复 Python,也有一套视频课
# 其他
- Web 开发
- Python Django 项目实战教程:https://www.bilibili.com/video/BV1pq4y1W7a1 (opens new window)
- Python + 微信小程序实战开发:https://www.bilibili.com/video/BV1Xy4y1s792(挺完整,后台用的 Django 框架)
- 数据结构与算法
- Python 数据结构与算法全套 100 节:https://www.bilibili.com/video/BV1uA411N7c5 (opens new window)
- 【北京大学】数据结构与算法Python版(完整版):https://www.bilibili.com/video/BV1VC4y1x7uv (opens new window)
- 爬虫
- 2020 年Python爬虫全套课程(学完可做项目):https://www.bilibili.com/video/BV1Yh411o7Sz (opens new window)
- Python 爬虫编程基础 5 天速成:https://www.bilibili.com/video/BV12E411A7ZQ(很短的爬虫实战入门课)
- 数据分析
- 自学数据分析课程:https://www.bilibili.com/video/BV1ZM4y1u7uF(很纯粹的数据分析 + 可视化课程,适合办公党快速上手)
- 完整数据分析课程:https://www.bilibili.com/video/BV1vV411p7D6(数据分析 + 机器学习,很全面)
- Python 数据分析入门视频合集:https://shimowendang.com/docs/36pykCPH6XCjKJcv/read (opens new window)
- 其他
- 一天搞定人脸识别项目(python+opencv):https://www.bilibili.com/video/BV1Lq4y1Z7dm (opens new window)
- Python 自动化办公:https://www.bilibili.com/video/BV1uv411W7Fi(主要是处理 Excel)
# 书籍
- ⭐《Python编程:从入门到实践》:https://www.code-nav.cn/rd/?rid=cbddf0af6064484f002658102cdbba17 (opens new window)
- 《python学习手册》:https://www.code-nav.cn/rd/?rid=79550af260643c8e0ce47ab84633e200 (opens new window)
- 《笨办法学Python3》:https://www.code-nav.cn/rd/?rid=b00064a760643bb90cbba72836995fd5 (opens new window)
- 《Python编程快速上手》(第2版):https://book.douban.com/subject/35387685/ (opens new window)
- 《Python Cookbook 中文版》(第3版):https://book.douban.com/subject/26381341/ (opens new window)
- 《父与子的编程之旅》:https://www.code-nav.cn/rd/?rid=8937eaa9615519680ed81c0e3165ee65 (opens new window)
- ⭐《Python 深度学习》https://www.code-nav.cn/rd/?rid=2d44d6c261624dd31224ed1b5841920c (opens new window)
- 《Python网络爬虫实战》第2版:https://www.code-nav.cn/rd/?rid=b00064a7606440d40cbc2fca19192e4f (opens new window)
- 《Python数据科学手册》:https://book.douban.com/subject/27667378/ (opens new window)
- 《利用Python进行数据分析》:https://book.douban.com/subject/25779298/ (opens new window)
- 《轻量级Django》:https://www.code-nav.cn/rd/?rid=28ee4e3e60641fd60d91fd2441418491 (opens new window)
- ⭐ 编程导航 - 超多 Python 书籍直接免费下载 :https://www.code-nav.cn/topic/Python(选择书籍标签)
- Python Guide(英文):https://docs.python-guide.org/ (opens new window)
# 文档
- ⭐ Python 入门教程(菜鸟教程):https://www.runoob.com/python3/python3-tutorial.html(可以在线写代码练习)
- Python 入门教程(W3Cschool):https://www.w3cschool.cn/python3/(支持手机阅读)
- Python 中文学习大本营:http://www.pythondoc.com/(一系列文档教程的集合)
- Python 100 天:https://github.com/jackfrued/Python-100-Days (opens new window)
- 廖雪峰 Python 入门教程:https://www.liaoxuefeng.com/wiki/1016959663602400 (opens new window)
- 莫烦 Python 教程:https://mofanpy.com/(包括基础、数据处理、机器学习等,部分内容有视频)
- Django 官方教程:https://docs.djangoproject.com/zh-hans/3.2/intro/tutorial01/ (opens new window)
- Manim 动画引擎教程:https://docs.manim.org.cn/shaders/ (opens new window)
- A Byte of Python:https://python.swaroopch.com/(Python 英文入门教程)
- ⭐ 谷歌 Python 代码规范:https://google.github.io/styleguide/pyguide.html (opens new window)
# 实战
- ⭐ 蓝桥云课 Python 实战合集:https://www.lanqiao.cn/courses/?fee=free&tag=Python (opens new window)
- 腾讯云在线 Python 实验:https://cloud.tencent.com/developer/labs/gallery?tagId=23 (opens new window)
- 阿里云 Python 入门实验:https://developer.aliyun.com/adc/scenario/e04fe73ad95d4782aef7aecca206196e (opens new window)
- 华为云沙箱实验室:https://lab.huaweicloud.com/testList.html (opens new window)
- Python123:https://python123.io/index(在线编程,部分课收费)
- CheckiO 游戏学 Python:https://py.checkio.org/ (opens new window)
- 通过测试交互式学 Python(英文):https://github.com/gregmalcolm/python_koans (opens new window)
- 交互式 Python 挑战(英文):https://github.com/donnemartin/interactive-coding-challenges (opens new window)
- 通过项目学 Python(英文):https://github.com/practical-tutorials/project-based-learning#python (opens new window)
- 通过示例交互式学 Python(英文):https://github.com/jerry-git/learn-python3 (opens new window)
# 代码
- 数据结构和算法 Python 实现:https://github.com/keon/algorithms (opens new window)
- 《剑指 Offer》算法面试题 Python 实现:https://github.com/JushuangQiao/Python-Offer (opens new window)
- 设计模式 Python 实现:http://www.pythontip.com/python-patterns/detail/abstract_factory (opens new window)
- Python Machine Learning 代码:https://github.com/rasbt/python-machine-learning-book-3rd-edition (opens new window)
- Python 小脚本:https://github.com/RealHacker/python-gems (opens new window)
# 合集
- ⭐ GitHub Python 专区:https://github.com/topics/python (opens new window)
- 神经网络和深度学习相关框架:https://github.com/ChristosChristofidis/awesome-deep-learning (opens new window)
- 机器学习相关库:https://github.com/josephmisiti/awesome-machine-learning#python (opens new window)
- 开源 Python 应用程序大全:https://github.com/mahmoud/awesome-python-applications (opens new window)
- Python 类库大全:https://github.com/vinta/awesome-python (opens new window)
- Python 类库大全(中文版):https://github.com/jobbole/awesome-python-cn (opens new window)
- Python 异步大全:https://github.com/timofurrer/awesome-asyncio (opens new window)
- jupyter 相关:https://github.com/markusschanta/awesome-jupyter (opens new window)
- Python 书单:https://github.com/Junnplus/awesome-python-books (opens new window)
- Python 书单(中文版):https://github.com/jobbole/awesome-python-books (opens new window)
- StackOverflow Python 专区:https://stackoverflow.com/questions/tagged/python(解决问题必备)
- ⭐ 掘金 Python 专区:https://juejin.cn/tag/Python(看技术文章)
# 社区
- ⭐ PythonTab:https://www.pythontab.com/(中文 Python 开发者社区)
- Learnku Python 技术论坛:https://learnku.com/python (opens new window)
- 开源中国:https://www.oschina.net/(综合的开源社区)
# 工具
- ⭐ Python 在线编程(菜鸟教程):https://c.runoob.com/compile/6/ (opens new window)
- 腾讯云 Python 在线手册:https://cloud.tencent.com/developer/devdocs (opens new window)
- Python 在线手册汇总:https://docs.pythontab.com/ (opens new window)
# 面试题
- Python 面试题整理:https://github.com/taizilongxu/interview_python (opens new window)(高星)
- Python 面试题整理:https://github.com/kenwoodjw/python_interview_question (opens new window)
- 机器学习面试题:https://geektutu.com/post/qa-ml.html (opens new window)
# 其他
- ⭐ Python 常见问题:https://docs.python.org/zh-cn/3/faq/general.html(官方提供的 )
- GitHub Python 趋势:https://github.com/trending/python (opens new window)
- Python 模块推荐:https://pymotw.com/3/ (opens new window)
- Python 练习册:https://github.com/Yixiaohan/show-me-the-code(一些 Python 练习题目)