全球最大的同性交友网站——Github!
因为逛逛网站就能学习很多姿势!
这不,又发现了一个牛比的项目
这个项目在Github上有1.6k star!
是一个讲述Python黑魔法的项目
项目地址是:
https://github.com/iswbm/magic-python
项目介绍了很多少有人知的一些 Python 冷门知识,Python Shell 的多样玩法,各种令人疯狂的 Python 炫技操作,Python 的超详细进阶知识解读,还有不断扩充完善适合所有 Python 开发者的开发技巧等等。
带给你对Python船新的体验!
目前该Python黑魔法手册有7章,小编已经看完一半,马上写代码尝试了下,美滋滋!
很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:810735403
以下是该项目的详细目录:
第一章:魔法冷知识
1.1 默默无闻的省略号很好用
1.2 使用 end 来结束代码块
1.3 可直接运行的 zip 包
1.4 反斜杠的倔强: 不写最后
1.5 如何修改解释器提示符
1.6 简洁而优雅的链式比较
1.7 and 和 or 的短路效应
1.8 连接多个列表最极客的方式
1.9 字典居然是可以排序的?
1.10 哪些情况下不需要续行符?
1.11 用户无感知的小整数池
1.12 神奇的 intern 机制
1.13 site-packages和 dist-packages
1.14 argument 和 parameter 的区别?
1.15 /usr/bin/env python 有什么用?
1.16 dict() 与 {} 生成空字典有什么区别?
1.17 有趣但没啥用的 import 用法
1.18 正负得负,负负得正
1.19 return不一定都是函数的终点
1.20 字符串里的缝隙是什么?
1.21 Python2下 也能使用 print(“”)
1.22 字母也玩起了障眼法
1.23 数值与字符串的比较
1.24 时有时无的切片异常
1.25 迷一样的字符串
1.26 x 与 +x 等价吗?
1.27 += 不等同于=+
1.28 循环中的局部变量泄露
1.29 局部/全局变量傻傻分不清
1.30 break /continue 和 上下文管理器哪个优先级高?
1.31 如何像 awk一样分割字符串?
第二章:魔法命令行
2.1 懒人必备技能:使用 “_”
2.2 最快查看包搜索路径的方式
2.3 使用 json.tool 来格式化 JSON
2.4 命令行式执行 Python 代码
2.5 用调试模式执行脚本
2.6 如何快速搭建 HTTP 服务器
2.7 快速构建 HTML 帮助文档
2.8 最正确且优雅的装包方法
2.9 往 Python Shell 中传入参数
2.10 让脚本报错后立即进入调试模式
2.11 极简模式执行 Python Shell
2.12 在执行任意代码前自动念一段平安经
2.13 启动 Python Shell 前自动执行某脚本
2.14 把模块当做脚本来执行 7 种方法及原理
第三章:炫技魔法操作
3.1 八种连接列表的方式
3.2 合并字典的 8 种方法
3.3 花式导包的八种方法
3.4 条件语句的七种写法
3.5 判断是否包含子串的七种方法
3.6 海象运算符的三种用法
3.7 模块重载的五种方法
第四章:魔法进阶扫盲
4.1 精通装饰器八大用法
4.2 深入理解描述符
4.3 精通上下文管理器
第五章:魔法开发技巧
5.1 嵌套上下文管理的另类写法
5.2 将嵌套 for 循环写成单行
5.3 单行实现 for 死循环如何写?
5.4 如何关闭异常自动关联上下文?
5.5 自带的缓存机制不用白不用
5.6 如何流式读取数G超大文件
5.7 实现类似 defer 的延迟调用
5.8 如何快速计算函数运行时间
5.9 重定向标准输出到日志
5.10 快速定位错误进入调试模式
5.11 在程序退出前执行代码的技巧
5.12 逗号也有它的独特用法
5.13 如何在运行状态查看源代码?
5.14 单分派泛函数如何写?
5.15 让我爱不释手的用户环境
5.16 字符串的分割技巧
5.17 反转字符串/列表最优雅的方式
5.18 如何将 print 内容输出到文件
5.19 改变默认递归次数限制
5.20 让你晕头转向的 else 用法
5.21 字典访问不存在的key时不再报错
5.22 如何实现函数的连续调用?
5.23 如何实现字典的多级排序
第六章:良好编码习惯
6.1 不要直接调用类的私有方法
6.2 默认参数最好不为可变对象
6.3 增量赋值的性能更好
6.4 别再使用 pprint 打印了
6.5 变量名与保留关键冲突怎么办?
6.6 不想让子类继承的变量名该怎么写?
第七章:神奇魔法模块
7.1 远程登陆服务器的最佳利器
7.2 代码 BUG 变得酷炫的利器
7.3 少有人知的 Python "重试机制"
7.4 规整字符串提取数据的神器
7.5 一行代码让代码运行速度提高100倍
例如在讲到合并字典的8种方法中,还提到了Python3.9新特性方法:
>>> profile = {"name": "xiaoming", "age": 27}
>>> ext_info = {"gender": "male"}
>>>
>>> profile | ext_info
{'name': 'xiaoming', 'age': 27, 'gender': 'male'}
>>>
>>> ext_info | profile
{'gender': 'male', 'name': 'xiaoming', 'age': 27}
>>>
>>> ext_info |= profile
>>> ext_info
{'gender': 'male', 'name': 'xiaoming', 'age': 27}
>>>
>>>
>>> profile |= ext_info
>>> profile
{'name': 'xiaoming', 'age': 27, 'gender': 'male'}
还有,我们看一些优秀代码中,经常有续行符,主要是优化代码排版,提高代码可读性,例如:
>>> a = 'talk is cheap,'\
... 'show me the code.'
>>>
>>> print(a)
talk is cheap,show me the code.
那什么时候用续行符、什么时候不用呢?
作者提出:经过总结,在这些符号中间的代码换行可以省略掉续行符:[]
,()
,{}
>>> my_list=[1,2,3,
... 4,5,6]
>>> my_tuple=(1,2,3,
... 4,5,6)
>>> my_dict={"name": "MING",
... "gender": "male"}
你想知道连接多个列表最极客的方式么?
>>> a = [1,2]
>>> b = [3,4]
>>> c = [5,6]
>>>
>>> sum((a,b,c), [])
[1, 2, 3, 4, 5, 6]
反正小编我是傻了。。。
还有Python3.8版本上的海象运算符,你可能都没听过。
例如常规代码:
age = 20
if age > 18:
print("已经成年了")
如果用海象运算符,会变成这样!
if (age:= 20) > 18:
print("已经成年了")
我只想说,这代码真优雅!
如果面试问你说Python的字典是有序的么?你估计会轻蔑一笑,怎么可能有序!
但是3.6+版本的Python,字典就是有序的了。。。
# Python3.6.7
>>> mydict = {str(i):i for i in range(5)}
>>> mydict
{'0': 0, '1': 1, '2': 2, '3': 3, '4': 4}
感谢项目作者的分享,大家可以给他点个star~
在这里还是要推荐下我自己建的Python开发交流学习(qq)群:810735403,群里都是学Python开发的,如果你正在学习Python ,欢迎你加入,大家都是软件开发党,不定期分享干货(只有Python软件开发相关的),包括我自己整理的一份2021最新的Python进阶资料和高级开发教程,欢迎进阶中和想深入Python的小伙伴!