Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/iswbm/magic-python

Python 黑魔法手册
https://github.com/iswbm/magic-python

Last synced: 12 days ago
JSON representation

Python 黑魔法手册

Lists

README

        

![](http://image.iswbm.com/20200719231251.png)


微信
GitHub stars
GitHub issues
Build Status




## 关于本书

本书是一本专门介绍 **Python 黑魔法玩法**的电子书。其中包括少有人知的一些 Python 冷门知识,Python Shell 的多样玩法,各种令人疯狂的 Python 炫技操作,Python 的超详细进阶知识解读,还有不断扩充完善适合所有 Python 开发者的开发技巧等等。

本书旨在向你介绍一个不一样的 Python,而不是一份初学者的 Python 基础教学资料。

![](https://image.iswbm.com/20200802161110.png)

## 如何开始

阅读本书有两个入口:

1. **在线阅读**:实时更新最新内容,链接:[Python黑魔法手册](https://magic.iswbm.com/)

2. **离线阅读**:到 [Release](https://github.com/iswbm/magic-python/releases) 下载最新版的 PDF

## 我的电子书

我写过四个在线文件,分别是:

1. 《[Python 黑魔法指南](https://magic.iswbm.com/)》:https://magic.iswbm.com/
2. 《[PyCharm 中文指南](https://pycharm.iswbm.com/)》:https://pycharm.iswbm.com/
3. 《[Python 中文指南](https://python.iswbm.com/)》:https://python.iswbm.com/

4. 《[Go 编程时光 - 入门宝典](https://golang.iswbm.com/)》:https://golang.iswbm.com/

有兴趣的,可以点击链接了解一下。

## 目录大纲

- **第一章:魔法冷知识**
* [# 1.1 默默无闻的省略号很好用](https://magic.iswbm.com/c01/c01_01.html)
* [# 1.2 使用 end 来结束代码块](https://magic.iswbm.com/c01/c01_02.html)
* [# 1.3 可直接运行的 zip 包](https://magic.iswbm.com/c01/c01_03.html)
* [# 1.4 反斜杠的倔强: 不写最后](https://magic.iswbm.com/c01/c01_04.html)
* [# 1.5 如何修改解释器提示符](https://magic.iswbm.com/c01/c01_05.html)
* [# 1.6 简洁而优雅的链式比较](https://magic.iswbm.com/c01/c01_06.html)
* [# 1.7 and 和 or 的短路效应](https://magic.iswbm.com/c01/c01_07.html)
* [# 1.8 连接多个列表最极客的方式](https://magic.iswbm.com/c01/c01_08.html)
* [# 1.9 字典居然是可以排序的?](https://magic.iswbm.com/c01/c01_09.html)
* [# 1.10 哪些情况下不需要续行符?](https://magic.iswbm.com/c01/c01_10.html)
* [# 1.11 用户无感知的小整数池](https://magic.iswbm.com/c01/c01_11.html)
* [# 1.12 神奇的 intern 机制](https://magic.iswbm.com/c01/c01_12.html)
* [# 1.13 site-packages和 dist-packages](https://magic.iswbm.com/c01/c01_13.html)
* [# 1.14 argument 和 parameter 的区别?](https://magic.iswbm.com/c01/c01_14.html)
* [# 1.15 /usr/bin/env python 有什么用?](https://magic.iswbm.com/c01/c01_15.html)
* [# 1.16 dict() 与 {} 生成空字典有什么区别?](https://magic.iswbm.com/c01/c01_16.html)
* [# 1.17 有趣但没啥用的 import 用法](https://magic.iswbm.com/c01/c01_17.html)
* [# 1.18 正负得负,负负得正](https://magic.iswbm.com/c01/c01_18.html)
* [# 1.19 return不一定都是函数的终点](https://magic.iswbm.com/c01/c01_19.html)
* [# 1.20 字符串里的缝隙是什么?](https://magic.iswbm.com/c01/c01_20.html)
* [# 1.21 Python2下 也能使用 print(“”)](https://magic.iswbm.com/c01/c01_21.html)
* [# 1.22 字母也玩起了障眼法](https://magic.iswbm.com/c01/c01_22.html)
* [# 1.23 数值与字符串的比较](https://magic.iswbm.com/c01/c01_23.html)
* [# 1.24 时有时无的切片异常](https://magic.iswbm.com/c01/c01_24.html)
* [# 1.25 迷一样的字符串](https://magic.iswbm.com/c01/c01_25.html)
* [# 1.26 x 与 +x 等价吗?](https://magic.iswbm.com/c01/c01_26.html)
* [# 1.27 += 不等同于=+](https://magic.iswbm.com/c01/c01_27.html)
* [# 1.28 循环中的局部变量泄露](https://magic.iswbm.com/c01/c01_28.html)
* [# 1.29 局部/全局变量傻傻分不清](https://magic.iswbm.com/c01/c01_29.html)
* [# 1.30 break /continue 和 上下文管理器哪个优先级高?](https://magic.iswbm.com/c01/c01_30.html)
* [# 1.31 如何像 awk一样分割字符串?](https://magic.iswbm.com/c01/c01_31.html)
* [# 1.32 如何让大数变得更易于阅读?](https://magic.iswbm.com/c01/c01_32.html)
- **第二章:魔法命令行**
* [# 2.1 懒人必备技能:使用 “_”](https://magic.iswbm.com/c02/c02_01.html)
* [# 2.2 最快查看包搜索路径的方式](https://magic.iswbm.com/c02/c02_02.html)
* [# 2.3 使用 json.tool 来格式化 JSON](https://magic.iswbm.com/c02/c02_03.html)
* [# 2.4 命令行式执行 Python 代码](https://magic.iswbm.com/c02/c02_04.html)
* [# 2.5 用调试模式执行脚本](https://magic.iswbm.com/c02/c02_05.html)
* [# 2.6 如何快速搭建 HTTP 服务器](https://magic.iswbm.com/c02/c02_06.html)
* [# 2.7 快速构建 HTML 帮助文档](https://magic.iswbm.com/c02/c02_07.html)
* [# 2.8 最正确且优雅的装包方法](https://magic.iswbm.com/c02/c02_08.html)
* [# 2.9 往 Python Shell 中传入参数](https://magic.iswbm.com/c02/c02_09.html)
* [# 2.10 让脚本报错后立即进入调试模式](https://magic.iswbm.com/c02/c02_10.html)
* [# 2.11 极简模式执行 Python Shell](https://magic.iswbm.com/c02/c02_11.html)
* [# 2.12 在执行任意代码前自动念一段平安经](https://magic.iswbm.com/c02/c02_12.html)
* [# 2.13 启动 Python Shell 前自动执行某脚本](https://magic.iswbm.com/c02/c02_13.html)
* [# 2.14 把模块当做脚本来执行 7 种方法及原理](https://magic.iswbm.com/c02/c02_14.html)
* [# 2.15 命令行式打开 idle 编辑脚本](https://magic.iswbm.com/c02/c02_15.html)
* [# 2.16 快速计算字符串 base64编码](https://magic.iswbm.com/c02/c02_16.html)
* [# 2.17 快速找到指定文件的mime类型](https://magic.iswbm.com/c02/c02_17.html)
* [# 2.18 快速查看 Python 的环境信息](https://magic.iswbm.com/c02/c02_18.html)
* [# 2.19 快速解压和压缩文件](https://magic.iswbm.com/c02/c02_19.html)
* [# 2.20 快速编辑 Python 脚本](https://magic.iswbm.com/c02/c02_20.html)
* [# 2.21 使用自带的 telnet 端口检测工具](https://magic.iswbm.com/c02/c02_21.html)
* [# 2.22 快速将项目打包成应用程序](https://magic.iswbm.com/c02/c02_22.html)
* [# 2.23 快速打印函数的调用栈](https://magic.iswbm.com/c02/c02_23.html)
- **第三章:炫技魔法操作**
* [# 3.1 八种连接列表的方式](https://magic.iswbm.com/c03/c03_01.html)
* [# 3.2 合并字典的 7 种方法](https://magic.iswbm.com/c03/c03_02.html)
* [# 3.3 花式导包的八种方法](https://magic.iswbm.com/c03/c03_03.html)
* [# 3.4 条件语句的七种写法](https://magic.iswbm.com/c03/c03_04.html)
* [# 3.5 判断是否包含子串的七种方法](https://magic.iswbm.com/c03/c03_05.html)
* [# 3.6 海象运算符的三种用法](https://magic.iswbm.com/c03/c03_06.html)
* [# 3.7 模块重载的五种方法](https://magic.iswbm.com/c03/c03_07.html)
* [# 3.8 Python 转义的五种表示法](https://magic.iswbm.com/c03/c03_08.html)
* [# 3.9 Python 装包的八种方法](https://magic.iswbm.com/c03/c03_09.html)
* [# 3.10 Python装饰器的六种写法](https://magic.iswbm.com/c03/c03_10.html)
* [# 3.11 Python 读取文件的六种方式](https://magic.iswbm.com/c03/c03_11.html)
* [# 3.12 调用函数的九种方法](https://magic.iswbm.com/c03/c03_12.html)
* [# 3.13 创造 "新语法" 的黑科技](https://magic.iswbm.com/c03/c03_13.html)
- **第四章:魔法进阶扫盲**
* [# 4.1 精通上下文管理器](https://magic.iswbm.com/c04/c04_01.html)
* [# 4.2 深入理解描述符](https://magic.iswbm.com/c04/c04_02.html)
* [# 4.3 神奇的元类编程](https://magic.iswbm.com/c04/c04_03.html)
- **第五章:魔法开发技巧**
* [# 5.1 嵌套上下文管理的另类写法](https://magic.iswbm.com/c05/c05_01.html)
* [# 5.2 将嵌套 for 循环写成单行](https://magic.iswbm.com/c05/c05_02.html)
* [# 5.3 单行实现 for 死循环如何写?](https://magic.iswbm.com/c05/c05_03.html)
* [# 5.4 如何关闭异常自动关联上下文?](https://magic.iswbm.com/c05/c05_04.html)
* [# 5.5 自带的缓存机制不用白不用](https://magic.iswbm.com/c05/c05_05.html)
* [# 5.6 如何流式读取数G超大文件](https://magic.iswbm.com/c05/c05_06.html)
* [# 5.7 实现类似 defer 的延迟调用](https://magic.iswbm.com/c05/c05_07.html)
* [# 5.8 如何快速计算函数运行时间](https://magic.iswbm.com/c05/c05_08.html)
* [# 5.9 重定向标准输出到日志](https://magic.iswbm.com/c05/c05_09.html)
* [# 5.10 快速定位错误进入调试模式](https://magic.iswbm.com/c05/c05_10.html)
* [# 5.11 在程序退出前执行代码的技巧](https://magic.iswbm.com/c05/c05_11.html)
* [# 5.12 逗号也有它的独特用法](https://magic.iswbm.com/c05/c05_12.html)
* [# 5.13 如何在运行状态查看源代码?](https://magic.iswbm.com/c05/c05_13.html)
* [# 5.14 单分派泛函数如何写?](https://magic.iswbm.com/c05/c05_14.html)
* [# 5.15 让我爱不释手的用户环境](https://magic.iswbm.com/c05/c05_15.html)
* [# 5.16 字符串的分割技巧](https://magic.iswbm.com/c05/c05_16.html)
* [# 5.17 反转字符串/列表最优雅的方式](https://magic.iswbm.com/c05/c05_17.html)
* [# 5.18 如何将 print 内容输出到文件](https://magic.iswbm.com/c05/c05_18.html)
* [# 5.19 改变默认递归次数限制](https://magic.iswbm.com/c05/c05_19.html)
* [# 5.20 让你晕头转向的 else 用法](https://magic.iswbm.com/c05/c05_20.html)
* [# 5.21 字典访问不存在的key时不再报错](https://magic.iswbm.com/c05/c05_21.html)
* [# 5.22 如何实现函数的连续调用?](https://magic.iswbm.com/c05/c05_22.html)
* [# 5.23 如何实现字典的多级排序](https://magic.iswbm.com/c05/c05_23.html)
* [# 5.24 对齐字符串的两种方法](https://magic.iswbm.com/c05/c05_24.html)
* [# 5.25 将位置参数变成关键字参数](https://magic.iswbm.com/c05/c05_25.html)
* [# 5.26 如何获取一个函数设定的参数](https://magic.iswbm.com/c05/c05_26.html)
* [# 5.27 如何进行版本的比较](https://magic.iswbm.com/c05/c05_27.html)
* [# 5.28 如何捕获警告?(注意不是捕获异常)](https://magic.iswbm.com/c05/c05_28.html)
* [# 5.29 如何禁止对象深拷贝?](https://magic.iswbm.com/c05/c05_29.html)
* [# 5.30 如何将变量名和变量值转为字典?](https://magic.iswbm.com/c05/c05_30.html)
* [# 5.31 替换实例方法的最佳实践](https://magic.iswbm.com/c05/c05_31.html)
* [# 5.32 如何动态创建函数?](https://magic.iswbm.com/c05/c05_32.html)
* [# 5.33 如何规定函数的参数类型?](https://magic.iswbm.com/c05/c05_33.html)
- **第六章:良好编码习惯**
* [# 6.1 不要直接调用类的私有方法](https://magic.iswbm.com/c06/c06_01.html)
* [# 6.2 默认参数最好不为可变对象](https://magic.iswbm.com/c06/c06_02.html)
* [# 6.3 增量赋值的性能更好](https://magic.iswbm.com/c06/c06_03.html)
* [# 6.4 别再使用 pprint 打印了](https://magic.iswbm.com/c06/c06_04.html)
* [# 6.5 变量名与保留关键字冲突怎么办?](https://magic.iswbm.com/c06/c06_05.html)
* [# 6.6 不想让子类继承的变量名该怎么写?](https://magic.iswbm.com/c06/c06_06.html)
* [# 6.7 利用 any 代替 for 循环](https://magic.iswbm.com/c06/c06_07.html)
* [# 6.8 不同条件分支里应减少重合度](https://magic.iswbm.com/c06/c06_08.html)
* [# 6.9 如无必要,勿增实体噢](https://magic.iswbm.com/c06/c06_09.html)
* [# 6.10 保持代码的简洁与可诗性](https://magic.iswbm.com/c06/c06_10.html)
* [# 6.11 给模块的私有属性上保险](https://magic.iswbm.com/c06/c06_11.html)
* [# 6.12 变量不能与保留关键字重名](https://magic.iswbm.com/c06/c06_12.html)
- **第七章:神奇魔法模块**
* [# 7.1 远程登陆服务器的最佳利器](https://magic.iswbm.com/c07/c07_01.html)
* [# 7.2 代码 BUG 变得酷炫的利器](https://magic.iswbm.com/c07/c07_02.html)
* [# 7.3 少有人知的 Python "重试机制"](https://magic.iswbm.com/c07/c07_03.html)
* [# 7.4 规整字符串提取数据的神器](https://magic.iswbm.com/c07/c07_04.html)
* [# 7.5 一行代码让代码运行速度提高100倍](https://magic.iswbm.com/c07/c07_05.html)
* [# 7.6 新一代的调试神器:PySnooper](https://magic.iswbm.com/c07/c07_06.html)
* [# 7.7 比open更好用、更优雅的读取文件](https://magic.iswbm.com/c07/c07_07.html)
* [# 7.8 像操作路径一样,操作嵌套字典](https://magic.iswbm.com/c07/c07_08.html)
* [# 7.9 读取文件中任意行的数据](https://magic.iswbm.com/c07/c07_09.html)
* [# 7.10 让你的装饰器写得更轻松的神库](https://magic.iswbm.com/c07/c07_10.html)
* [# 7.11 国际化模块,让翻译更优雅](https://magic.iswbm.com/c07/c07_11.html)
* [# 7.12 非常好用的调度模块](https://magic.iswbm.com/c07/c07_12.html)
* [# 7.13 实现字典的点式操作](https://magic.iswbm.com/c07/c07_13.html)
* [# 7.14 使用 trypackage 试用新库](https://magic.iswbm.com/c07/c07_14.html)
* [# 7.15 利用 streamlit 傻瓜式构建可视化web应用](https://magic.iswbm.com/c07/c07_15.html)

## 写在最后

本书所有文章均为本人原创,若对你学习 Python 有帮助,希望你能多多帮忙宣传,让更多的人知道这本书。

如果你有不错的内容,想加入进来,可以提交 pull requests ,大家一起努力作好这个项目。