不知不觉已经在CSDN写了三百多篇博客,这些博客中,Python相关的内容占了绝大多数,而这些与Python有关的内容中,绝大多数又都是我个人学习的总结,本文希望把我的Python学习过程做一个总结,也希望能够帮助不同阶段的Pythoner。
文章目录
- 入门
- 科学计算
- 并发与混合编程
- 标准库模块
- 算法
- 炫酷的应用
入门
首先,对于尚未入门的朋友,这里准备了两篇,这两篇博客都是往年的1024程序员日时写的,也都得到了CSDN的鼓励,希望可以帮助初学者,找到学习Python的入门路径。
- 如果1个小时甚至都没法入门Python,那还是换个语言吧,或者干脆换个专业
- 如何用两个晚上教会妹纸Python
在初步入门之后,需要对一些最基础的Python模块有一个认识,比如对字符串、文件读写以及常见文件类型的处理方案:
- python字符串
- csv文件
- json文件
- 文件读写函数open
- time模块
python号称函数式语言,而下面的模块则是助力Python成为函数式语言的三大神器,其中运算符函数化可以提供括号风格的书写格式;functools
可以加速Python的龟速循环与递归;itertools
可以避免迭代对象对内存的大量占用。
- 运算符函数化operator模块
- 高手分界线functools
- 高手专用itertools
科学计算
在入门之后,就应该迅速累积代码量了,这里建议从数学模块开始。Python标准库中的数学模块有六个:Python内置的6个数学模块,但对于真正想做科学计算的朋友来说,那还是要学习Numpy的:Numpy专栏,而以下四篇博客是不可不学的:
- Numpy高性能计算数组array
- Numpy数学函数
- Numpy生成等差数组
- Numpy 逻辑函数和位处理函数
除了Numpy
之外,对Pandas
的逻辑也可稍加涉猎:Pandas绘图函数总结
并发与混合编程
一般来说,并发与混合编程更多解决的是效率问题,而非功能问题。而当一个程序员对效率产生需求的时候,说明他已经真正是一个程序员了,而对多线程和多进程的友好支持,挽救了Python的速度,如相对多线程的机理和使用方法有一个了解,这篇博客不可不看: Python多线程详解
由于多进程和多线程的语法过于雷同,所以并没有总结,而只针对多进程通信的部分内容做了说明。
- 进程通信
- 进程池
此外,这篇用了cuda之后速度起飞,尽管主要目的是介绍显卡计算,但测试了多线程和多进程的对比,值得一看。
如果想进一步提高Python的速度,可以利用Python的胶水语言的特色,通过Python和C的混合编程,达到开发速度和运行速度的双赢,走上人生巅峰
- Windows系统中python和C混合编程
标准库模块
Python标准库中封装了大量值得一看的模块,
os模块
复现了操作系统的部分功能,提供了包括路径操作、进程管理等一些列功能。其中的os.path
针对不同操作系统的文件组织方式,提供了相同的API,实现了跨平台
- 调用操作系统 os模块
- 路径处理之os.path
- 路径匹配 glob
- 高阶文件操作 shutil
- 系统设置 sys
字符串最核心的问题就是格式化与搜索,前者的功能由字符串本身实现,后者则需通过强大的正则表达式。pprint
针对字典、列表优化了输出方案,textwrap
解决了针对段落文本的格式化问题。
- 正则表达式 re
- 美化输出 pprint
- 段落格式化 textwrap
与日期时间相关的模块,实际上提供的也是一种转换功能,即如何将一串时间戳转换为可读的数字,或者更进一步,转换为可读性更强的字符串。本文整理了如下三个与日期时间相关的模块,其中time
模块相对来说使用更频繁一些,除了获取系统时间之外,还提供了sleep
这种暂停线程的系统功能。
- 日历打印 calendar
- 时区变换 zoneinfo
算法
Python最多的一个应用场景就是算法原理的开发和验证,我也通过Python实现了一些比较热门的算法,并且希望在2023年继续总结,争取完成:用Python实现100种智能算法,目前已经实现的算法有:
- 模拟退火算法
- 遗传算法
- 差分进化算法
- 粒子群算法
- 鸡群算法
- 闪电连接算法
- 世界被优化算法
- BP神经网络
此外,对sklearn
库的聚类算法也做了一点总结
- KMeans聚类
- MeanShift聚类
- AP聚类AffinityPropagation
- Birch聚类
- DBSCAN
以及scipy
中封装的一些优化算法:
- 在Scipy中调用差分进化算法
- 跳盆算法,来自物质结构的优化算法
- 双模拟退火算法dual_annealing
炫酷的应用
这些年也写了一些绘图相关的博客,这些内容虽然没有解决什么痛点问题,但对Python的理解以及编程水平的提高是有所帮助的,比如
- Python手搓太阳系
- 模拟三体运动
- 画个足球:实现正20面体;画3D足球1;画3D足球2
- 模拟双摆运动
- Python绘制复杂曲线
- 穿山甲字符画视频