Python/Golang Web 入坑指南
____ _ _ ______ __ __ _ ____ _ _
| _ \ _ _| |_| |__ ___ _ __ / / ___| ___ \ \ / /__| |__ / ___|_ _(_) __| | ___
| |_) | | | | __| '_ \ / _ \| '_ \ / / | _ / _ \ \ \ /\ / / _ \ '_ \ | | _| | | | |/ _` |/ _ \
| __/| |_| | |_| | | | (_) | | | |/ /| |_| | (_) | \ V V / __/ |_) | | |_| | |_| | | (_| | __/
|_| \__, |\__|_| |_|\___/|_| |_/_/ \____|\___/ \_/\_/ \___|_.__/ \____|\__,_|_|\__,_|\___|
|___/
本指南根据作者的自学和工作经历提供(吐槽)一下python/golang web的学习路线,主要包括概念介绍,参考书籍,开发工具和开发流程等,希望可以帮助非科班人士通过自学入门python/golang 网站开发,弥补学校教育和公司需求之间的鸿沟(也作为自己的学习笔记和面试参考手册),同时也希望可以作为公司菜鸟实习生的培训手册,帮助公司快速培训新人上手开发,减轻招聘压力。 笔者目前能力有限,希望有经验的python圈人士可以一起协作。 本小书灵感来自于 requests 库作者的 python-guide 。 你可以使用强大的电子书阅读软件 calibre 下载epub格式阅读。
如果您感兴趣,也可以参考慕课网教程 《Python服务端工程师就业面试指导》 。 本课程提供了详细的Python后端知识大纲和常考面试题,帮助自学的同学就业。如果本文档有误,您可以在 github 直接提 issue.
注意:Python 不适合工程管理不完善的团队构建大型项目。如果贵团队没有编码规范、单元测试、静态检测、持续集成、文档注释中的一个或者几个,请慎用动态语言。 Python 结合 Go 基本可以解决大部分业务场景,Python 用来快速实现业务和想法,Go 来解决性能瓶颈,这俩也是笔者目前使用最多的语言。 如果因为某些网络原因打不开 readthedoc 网站,您可以参考下方快速上手使用 sphinx 本地构建电子书访问。
# 快速上手构建本地电子书
# 使用方式 1
# 本项目页面托管在 readthedoc,如果国内因为网络原因打不开,可以使用如下方式在本地构建
git clone https://github.com/PegasusWang/python-web-guide.git # 协作请fork一份你自己的地址
pip install -r requirements.txt # 安装 Sphinx==1.3.4
make html # 构建 html 电子书,之后会在本地生成一个 _build/html 文件夹
cd _build/html # 切换到构建好的 html 静态文件夹里
python3 -m http.server # 启动一个本地文件服务器,或者 python2 用 python -m SimpleHTTPServer
# 之后打开 http://127.0.0.1:8000/ 即可本地访问电子书
# 方式2(推荐):加入 sphinx-autobuild 自动编辑刷新
git clone https://github.com/PegasusWang/python-web-guide.git # 协作请fork一份你自己的地址
pip install -r requirements.txt # 安装 Sphinx==1.3.4, sphinx-autobuild
make serve # 之后打开 http://127.0.0.1:8000/ 即可本地访问电子书,编辑保存直接自动刷新浏览器
文档采用rst格式书写,用 readthedocs 托管。一个快速的rst语法demo 教程。 如果使用vim编写可以使用rst插件 riv.vim 配合 InstantRst 本地预览,定期pull一下拉取更新。 欢迎你fork一份然后添加自己的章节,本书主要面对经验尚浅的同学作为自学的指导手册,并非速成指南,内容来自笔者日常学习和工作经验的持续总结。 本电子版书集合了同事的智慧结晶,非常感谢你们带我入坑。 本指南同时会有一些不负责任的吐槽。学到东西的请狂点 star,让笔者有动力更新更多业界实战干货,更多技术分享请关注作者知乎帐号 pegasuswang ,知乎专栏 Python 学习之路 ,个人博客 。 笔者还维护了一个 vim 视频教程专栏,感兴趣可以访问 玩转vim
TODO:
如果您觉得有用,可以打赏支持作者继续创作!
如何编译 reST 文档
reST 文档的编译依赖 make 和 sphinx,安装完依赖后在文档的根目录执行 make html
构建 HTML 文档,如无错误即可在 _build/html
目录中生成对应的 HTML 文件, 可以在浏览器中直接打开 _build/html/index.html
预览生成的 HTML。或者用python起一个本地的server查看。
本文档托管在 ReadTheDocs,文档合并之主分支后将会自动构建,预览请访问 RTFD 。
- 入门基础
- 编码之前碎碎念(工程实践)
- 小白的踩坑记录
- Debug 调试技巧
- 开发和编程工具
- 工欲善其事,必先利其器 开(装)发(逼)工具
- MacOS 开发效率工具
- 命令行工具
- Mac 终端快速配置
- 打字速度练习
- Mac 屏保软件
- Git 相关
- Chrome 开发者插件
- 编程字体(适合代码显示)
- 代码工具/算法可视化
- 代码辅助和检测工具
- 代码质量检测平台
- 项目工具
- 代码仓库托管
- 项目模板脚手架
- 持续集成
- 配置中心
- Api 工具
- DSL
- 测试工具
- 文档/写书/笔记工具
- Swagger 工具
- 静态博客工具
- 日志、异常收集工具
- 管理及运维、监控工具(devops很火)
- API gateway
- 调试工具
- 抓包/网络工具
- Proxy
- 爬虫相关
- 异步任务框架
- 端口扫描
- 后台管理
- RPC
- Rest
- 数据处理和可视化
- 压测(benchmark)工具
- Profiler
- APM (Application Performance Management)
- 数据库工具
- 绘图/流程图/思维导图工具
- 量化投资
- 效率,时间管理工具
- 程序员外设/健康工具
- 视频课程录制(vlog工具)
- HTML Presentation Tools
- 思维导图工具
- 电子阅读器/电子书软件
- Linux network debug Tools
- Linux debug Tools
- 参考:
- Write Idiom Python
- Python支持链式比较
- Python交换变量
- Python中替代三目运算符?:
- 拼接字符列表时,用join方法去实现
- 格式化字符时多使用format函数
- 使用列表或者字典comprehension
- 条件判断时,避免直接和True, False, None进行比较(==)
- 使用enumerate代替for循环中的index变量访问
- 避免使用可变(mutable)变量作为函数参数的默认初始化值
- 一切皆对象
- 防御式编程EAFP vs LBYL
- 用dict对象完成switch…case…的功能
- 访问tuple的数据项时,可以用namedtuple代替index的方式访问
- 用isinstance来判断对象的类型
- 用with管理操作资源的上下文环境
- 使用generator返回耗费内存的对象
- 更多资源:
- 用python实现设计模式
- 1: The Fctory Pattern(工厂模式: 解决对象创建问题)
- 2: The Builder Pattern(构造模式: 控制复杂对象的构造)
- 3:The Prototype Pattern(原型模式:解决对象拷贝问题)
- 4: The Adapter Pattern(适配器模式: 解决接口不兼容问题)
- 5: The Decorator Pattern(装饰器模式: 无需子类化实现扩展对象功能问题)
- 6: The Facade Pattern(外观模式: 简化复杂对象的访问问题)
- 7: The Flyweight Pattern(享元模式: 实现对象复用从而改善资源使用)
- 8: The Model-View-Controller Pattern(mvc模式:解耦展示逻辑和业务逻辑)
- 9: The Proxy Pattern(代理模式:通过一层间接保护层实现更安全的接口访问)
- 10: The Chain of Responsibility Pattern (责任链模式:创建链式对象用来接收广播消息)
- 11: The Command Pattern(命令模式:用来给应用添加Undo操作)
- 12: The Interpreter Pattern(解释器模式:用来实现Domain Specific Language(DSL))
- 13: The Observer Pattern(发布订阅模式:用来处理多个对象之间的发布订阅问题)
- 14: The State Pattern(状态模式:实现有限状态机)
- 15: The Strategy Pattern(策略模式:动态选择算法策略)
- 16: The Template Pattern(模板模式:抽象出算法公共部分从而实现代码复用)
- 单例模式: 使得一个类最多生成一个实例。
- 面向过程与面向对象
- python中的抽象基类
- python中的Mixin
- 用python实现基本数据结构和算法
- 数据库
- 技术栈
- 开发工具
- 个人Python笔记
- Golang 快速入门 Go For Pythonisa
- 微服务/分布式 web 组件
- 个人备忘录
- Python
- pip/easy_install
- IPython
- Ipdb
- Chrome(Mac)
- MacOS
- SSH
- Mac 蓝牙耳机(自用索尼 wi1000x)
- Proxy
- Oh My Zsh
- Linux(centos/ubuntu)
- Centos
- crontab
- Iterm2/Terminal
- Tmux
- SSH
- Fabric
- Makefile
- Git
- Git工作流
- Git hook
- vim
- vim-go plugin Tips
- 用markdown文件制作html ppt
- PPT 技巧
- Benchmark
- Ffmpeg && youbute-dl
- Vlog 如何增加字幕
- Curl
- Pandoc 转换文档格式
- Wireshark(mac tcp 抓包)
- HHKB 静电容键盘。Karabiner 修改 mac 键位配置
- Docker 快速入门
- 如何编译 reST 文档
- 蘑菇碎碎念