2606 字
13 分钟
浅谈python自学之旅
2025-05-10
统计加载中…… 阅读:    访客: 统计加载失败

前言#

我的自学经历可能对纯新手参考性有限——毕竟我是出于热爱主动钻研编程的。

本文更偏向个人经验漫谈,适合茶余饭后寻找学习灵感时阅读。

阶段一:初学#

代码生来不是让人看不懂的,恰恰相反,就是用来让人看懂复杂的逻辑的。

我从高一开始接触python编程,一开始我并没有系统地看视频,更多的是不会就搜。

在初学阶段,最有效的学习方式是多试、多搜、主动践行编程思维。每当遇到反直觉的数学问题(例如”20%概率抽5次比10%概率抽10次更容易中奖?”),立刻用代码模拟验证。这种即学即用的方式让我快速建立了编程直觉。

只是看视频绝无可能进步,但视频能在你毫无头绪止步不前的时候推你一把。比如你可以在手机上把视频打开放到手机架上,老师写一句照着写一句,写完运行成功了,可以改改数再试试。

B站上大多数高收藏量的视频都很不错。我倾向于介绍mosh大神的课程。不过课程是死的,人是活的,选自己看的舒服的视频才是最重要的。看视频的时候注意不要过早接触不该接触的部分,比如视频里的Django框架。看这个的一般是面向就业的。

我见过学python时死记硬背关键词的。绝对不要这么做。单词一定要遇到一个弄懂一个。代码里出现一个init,就要去问ai这是什么意思,然后把Initialize这个单词学会。在这一阶段总共会遇到不到100个英语单词,还有几个既熟悉又陌生的单词比如run(运行), float(浮点数)等。

至此我没使用过什么太高级的代码编辑器,只有一个IDLE。太全面的编辑器我反而看不懂,因为涉及到很多把代码工程化标准化的东西,而我暂时用不到,眼花缭乱的专有名词和设置也只会乱人心。

当时我在中学,并没有太多时间看视频,最主要还是实战练习。当然这证明脱离视频完全实战练习+百度也是能学到东西的,即使效率可能并不高。

阶段二:应用#

人的价值在于创造力。机器能干的,人不要干。

当我发现编程语言能将「字符串」这种东西写到文件里的时候,我意识到这东西现在开始可能有用了。

我高中痴迷于Minecraft。这个游戏里命令的格式非常原始,比如要显示一个粒子效果就需要写一长串particle minecraft:dust 1.0 0.5 0.0 1 1 2 3 0 0 0 1 0 force。里面有颜色、坐标、透明度等等参数。当我发现python可以瞬间生成几万几十万行这种指令并写入到文件里执行的时候,我立刻开始着手写一些复杂的东西,比如画一个圆,变成色环……这个过程我学习了很多零散化的编程相关知识点

“零散化的编程相关知识点”是很杂很乱的,有的python课默认你懂,有的只会涉及一点。比如颜色编码、文本编码、环境变量、图片读取及其格式、运行速度的概念、文件路径文件权限甚至|键在哪这些问题等等都是在这个时期解决的。这些知识点有大有小,有人视作常识,有人闻所未闻,有人有但得一知半解之悟,只有大量上手实践才能把这个坑彻底填满。

好处是,这些知识点基本都是全计算机领域通用的。而且填满之后可以让你永远不会问出“我刚解压的文件在哪呢”这样的话。

本阶段渡过之后,你就正式入门python了。现在你能够驾驭VSCode、PyCharm(我正在用)等重型IDE软件了。需要注意的是,这次不能什么都弄懂了,因为你要进入深水区了。看到不懂的按钮,学习之前最好先问一下ai:“我一定需要这个功能吗?”

ABCD阶段是我上大学后并行渡过的。虽然是我一起渡过的,但你完全可以自行选修。

阶段A:专业知识#

尽管跨专业,一些计算机专业知识的学习一定程度上能加深对python的理解。举例来说,如果我不系统学操作系统,纯靠ai帮我写多线程,我可能这辈子都想不明白为什么cpu和内存都占满了,程序就是跑不动一点。

我学了一些基本的算法,当然至今我的算法能力也比不上ACM选手,但一些思维方式为我日后的学习带来了一定启发,至少我现在很少会写暴力遍历了。

针对操作系统,四级网络工程师的考纲包含操作系统中的进程线程模型和并发,这直接让我完成了学习异步、多线程和多进程的前置基础。同时对于我理解python的GIL上也很有帮助

众所周知python爬虫非常出名。于是我学了爬虫基础,破解了某收集表的定位打卡,实现了自定义位置和自动化帮几个人打卡,当然一个月后还是东窗事发,毕竟活人不能生成。

之后我还用python爬取了数学建模的数据、游戏相关资源等。这部分知识还适用于对接API,比如后来实现了微信ai聊天等。

阶段B:数学建模#

我发现很多视频的讲解的侧重点完全不同,起点也参差不齐。个人推荐先从“过程记录”等记录类视频下手,了解赛程之后选一个粉丝多的up主的教程过一遍。之后的一些细小的概念就只能去广学涉猎了。接触到不懂的概念要先确定这是哪个科目的,然后再去B站搜“xx期末速成”比如运筹学期末速成,最优化理论期末速成……这些视频的干货量是最高的,反正也不是真的要考,可以慢慢吃里面的陌生概念。

代码方面,我开始接触几个常用的数学建模库,比如numpy,pandas,scipy等等。我大多数时间是主动学习,也就是在写代码中学习。我会有意识地动用相关的库,使用相关的概念,比如接触到相关的数据模型我就会使用pandas.DataFrame,大规模计算会用numpy等。值得一提的是。学会python绘图之后,可以做一些在以前看来很暴力、但对计算机来说很平常的事,比如求微分方程的数值解。

这些常用的库的学习方式中,操作比较频繁的库(numpy,matplotlib等)我采用了读文档+百度的方式学习,代码量比较少的(scipy、sklearn等)就直接问AI了。

文档。就是库的开发者本人写的面向老手的教程,或者说介绍,里面有很多可能连ai也不知道的细节,但阅读门槛比较高。文档主要这些库的开发者们自己写的,所以总是最全面,最详细的。唯一的缺点是可能是英文的。

面向数学建模编程

阶段C:软件工程#

我要开发自己的网站。为此我需要学习后端框架。我从零开始学习主流的python后端框架Flask的方式就是看视频。因为有基础,理解速度非常快。但开始学容器化部署相关知识时,我又遇到一条类似阶段二的鸿沟,细碎的经验只能通过试错+百度解决。目前正在度过中。

对于异步、数据库、Git等比较小但重要的知识点,我在开发过程中就克服了。但工程化优化还要等我未来系统学习数据库和阅读asyncio源码之后才行。

阶段D:社区生态#

Github是全球最大的代码托管平台。只要编程英语过关,你能在这找到无数别人留下的资料、代码等(自己看和学一般不用管开源许可)。

开源指开放源代码,绝大多数允许私人非商业使用,一些小工具或者你认为写起来并不多但很麻烦且常用的代码很容易就能在上面找到。

当然你也可以在这留下你自己的代码。不过开源又是另一套社区规矩了。

阶段四: 真正的Python#

现在我对python的理解已经足够深入,再深入下去我就应该去探索C源码和接口了。

我们都知道Python的运行速度慢,但更要知道它慢在哪,如何能快。都知道Python是单线程,但要知道如何尽量减少单线程的影响如异步,或者直接学习使用多线程。这些就是我正在理解的问题。

这个阶段,我能在网上学到的东西已经寥寥无几,基本全靠日语生蹩脚的英语去大量看文档。有时候也会看看B站码农高天的视频,看看各路Python core dev的github仓库等等。

结语#

学python最重要的就是上手多试。前期上手多写测试,后期上手做大项目。只有练习了、理解了才会有真收获。

附:

推荐的python版本:

Python 3.12.8 官网安装 — 比较稳定的python版本。

代码编辑器:

Pycharm (目前是免费付费统一版本) — 纯python开发环境下最好用的编辑器

VSCode — 多语言环境下的代码编辑器

QPython — 在手机上利用碎片时间学习·运行python的软件

浅谈python自学之旅
https://blog.emumu.xyz/posts/2025-05-10-00/
作者
月宮絵夢
发布于
2025-05-10
许可协议
CC BY-NC-SA 4.0