0. 阅前须知
仅适合0编程基础的朋友
不支持Python 2.X 🐶
所有提到的学习方法和学习工具都有免费版
这篇文章目的是希望提供一个入门Python的思路
学习方法因人而异
行动大于心动
1. 为什么是Python?
1.1 语言特性不等于语言好坏
几乎所有的教程都会说Python是一门高级,简单,高效的动态解释型语言。可是在我看来,对于没有编程基础的小白,一门语言到底是编译型还是解释型等等特性,并不会成为影响选择学习这个语言的决定性因素,原因主要有三点。首先,了解不等于理解,即使我了解了这些所谓编程语言的特性,只要没有深入学习,就很难去理解这些特性到底体现在什么地方,为什么有这些特性。第二,对于新入门的朋友来说,编程本来就是一个全新的学习过程,在一个全新的领域里对比两个未知的事物,不会加深理解,例如,拿Python和C++, Java去对比特性,几乎等于给一个不会任何外语的中国人讲过去时和现在完成时的语法应用。第三,语言的难易程度和其他的一些特性大多是相对而言的,高级语言的封装程度高但是可操作底层的难度也同时上升了,解释型语言的开发速度快但是运行速度下降了,动态语言写起来不用关心数据类型和返回值但是代码可读性和重构能力也下降了。综上所述,仅仅想表达一个观点,编程语言的特性不能成为判断语言好坏的标准,因为本身并没有什么绝对好或者坏的语言。
1.2 特性面向需求
用好坏去评价一个编程语言过于浅薄,事实上,选择学习一门编程语言应该从需求出发,也就是说你学这玩意到底想要干什么。假如你需要一个学习周期短,开发速度快并且不怎么需要考虑重构的小型项目,那么Python可能比较适合你。又或者说,你需要用编程语言来找一份工作,那么我推荐Java,JS这些市场比较大的语言。如果你的学校课程或者毕业设计要求你写个Python项目,并且你也不抵触学习Python语言,那么你当然可以选择Python(有钱且不在意Plagiarism的,花钱找人代做或者用更不道德的方式都可以达成你的目的,没必要去花费精力学习)
评价标准 | 具体解读 |
---|---|
0. 主观层面上是不是愿意学习Python | 有没有兴趣? |
1. 客观层面 | |
a. 是否强制被迫学习Python | 学校的毕业设计?老板通知下个项目要你用Python做? |
b. 是否未来希望发展的方向需要Python | 学术需要?工作转型需要?竞争力提升? |
c. 有没有独立自主学习的能力 | 查找资料?辨别有用信息?看英文文档? |
d. 有空闲时间用来学习 | 传统行业工作996?忙于生计? |
我认为起码要想想上面的这些问题,再去决定是不是有学编程的必要。内在的核心逻辑是,任何一个行业,职业,能力做到近乎于极致的时候,都能为你的生活水平,个人核心竞争力提升带来帮助。简单的说,编程或者IT行业发展前景好,并不意味着对所有人来说编程都是必需品。因此,建议不要因为Python市场表现火热而盲目选择学习,这可能也是一种焦虑的表现。当然,如果你有基本的生活保证且愿意花时间学习新东西,那么我想Python是众多选择中的一项。这和学英语,学日语,又或者学跳舞并没有本质上的区别。归根究底,你需要什么?Python的特性是不是符合你的需求?
1.3 Python能用来做什么
除了不能给你生小孩,其他的它都行!
主要集中在以下几个比较火的方面,看看你的需求是不是恰好同时落在这几个选项里。
同时我也列举了一些可能的替代语言,假如你的需求非常单一,不妨考虑一下括号里的语言,看看他们的特性是不是更符合你的需求。
需求 | Python的适合度 | 代替选项 |
---|---|---|
0. 数据分析 | ⭐ ⭐ ⭐ ⭐ ⭐ | (R,MATLAB) |
1. 爬虫 | ⭐ ⭐ ⭐ ⭐ | (Go) |
2. 办工自动化 | ⭐ ⭐ ⭐ | (VBA) |
3. 量化交易 | ⭐ ⭐ ⭐ ⭐ | (Java) |
4. 网站后端 | ⭐ ⭐ ⭐ | (Java,Nodejs) |
5. 深度学习 | ⭐ ⭐ ⭐ ⭐ ⭐ ⭐ | 就Python了 |
2. 学习编程需要什么?
2.1 硬件
如果你考虑过上述所列举的一些问题,依然决定要学习Python,那么恭喜你,Life is short, you need Python,你需要先准备好必要的硬件设备来开始学习。
学编程不是用脑电波发功,一台电脑是必须的,键盘鼠标显示屏都得有吧。这里不推荐任何具体品牌的电脑,只谈选择的原则。
2.1.1 基础
符合如下几点,基本就可以开始学习编程了
几年前的老电脑也能学Python,只要是x64框架的都没什么问题,所以别借着学编程的理由买2080Ti+9900K(不差钱的老板,这句话当我没说)
Win或者Mac电脑不会影响学习Python,没什么大区别
笔记本和台式机都一样
换一套机械轴键盘并不会让你敲出的代码更好,有能用的就可以
240Hz电竞屏也不会让你更容易发现bug
电脑可以上网即可
2.1.2 进阶
当满足了上述基本条件时,你就已经具备了学习编程的硬件要求了。但是一台开机需要10分钟的老电脑,开个网页需要5分钟时,并不会帮助你更有效率地学习编程。所以可以根据自己的需求提升硬件配置。
基础Python更加依赖于CPU单核心性能(不代表不能用多核心!),所以选购CPU纠结的时候可以把单核性能纳入考虑范围中(毕竟单核性能强玩游戏也挺好)
好的显卡并不会在短期入门学习Python时提供更多的帮助,只会让你吃鸡时候的帧率有明显提升
内存不要太小,16g或者更高是最佳的,能大幅提升使用体验,内存频率没有显著影响
固态加载项目速度会快一些,按需升级
长时间看着电脑屏幕敲代码,大屏优于小屏,高分辨率屏要优于高刷新率屏,多屏优于单屏
选一个自己打字顺手且不影响身边人(打字不要很吵)的键盘
2.2 软件
当你的电脑准备好了,那么你需要对应的开发环境来支持你的学习。
2.2.1 Python
就一句,选3.X版本,别选2.X,对于Python入门学习来说,可以选最新版本。目前最新的是 Python 3.8.2。
2.2.2 编辑器
有很多种选择,VSCode,PyCharm,Sublime等等,而我最推荐Pycharm,只要你的电脑内存大于8g,我认为选择PyCharm要比VSCode好很多。
PyCharm作为宇宙第一IDE!配置简单功能齐全,这就已经足够了。反观VSCode,作为编辑器,只用来学习Python并不占优,虽然他内存占用少,但是加载很多插件后一样会卡,而且配置起来不是很友好。仅仅学习Python而不需要集成的编辑环境时,专注Python项目的PyCharm一定是最佳选择。
2.2.3 虚拟环境
曾经年少无知的我,一直用的都是virtualenv,直到我用了conda,发现人生都明亮了起来。对那些想要踩坑学习,体验生活的朋友们,用virtualenv吧。如果想简单方便,建议下载Anaconda,仅使用里面Jupyter和conda就够了。
2.2.4 操作系统
Windows和Mac最大的区别是,Windows可以玩的游戏多,在学习Python上并没有什么太大的区别。如果你需要一个纯粹的用来学习Python的操作系统,推荐Linux(比如Ubuntu,CentOS, Arch等)
2.3 资源 ⭐
这一部分应该是最重要的了,我在前面提到过,本文所讲述的所有工具和资源都有免费版。怎么找到这些资源,然后开始学呢?
首先,有几点我认为很关键!
视频,网页,书籍,文档,笔记都是学习资源,我都尝试过,并且根据我自己的经验,学习基础语法最推荐的是视频学习(网课,线上培训等),因为资源好找,有免费版本,时间地点限制性弱
网上很多视频资源用来入门Python学习,我建议从全栈工程师的角度入门,在学习完基础语法后,再专门去看不同的模块或者方向
7天速成数据分析,1小时学会爬虫,这些都是“捷径”。但是,这些捷径可能不会帮助你长期的学习和发展,个人能力和价值的提升需要时间来沉淀。所以别着急,用笨办法看点枯燥的东西,会有收获的。一切强调快速入门Python的视频教程,并不一定适合新手入门。
文档是个好东西,源代码也是好东西,所有关于Python你不知道的,大多都能通过这两项找到答案
- 仅仅是我的学习经验,如果你有你认为更适合自己的方法,相信自己的方法,不要让别人判断你是不是合适
2.3.1 视频入门学习课程(主要) ⭐
推荐黑马程序员课程,以及老男孩Python全栈课程。这些课程可以通过1. B站,2.网盘搜索,3. 闲鱼找到。需要注意的是课程时间,尽量新一点,会包含新版本的特性在其中,包括模块的讲解。视频课程用的什么Python版本,你也可以跟着一起用一样的版本。无论选择了什么,从基础语法一点点慢慢看慢慢学,所有的代码起码应该自己手敲一遍。
不推荐网易课堂和慕课网,两点原因,花钱,太多太杂。在不差钱的情况下,可以从这些网站里找Python全栈方向的视频来学习,有很多也非常的优秀。2.3.2 学习Python的文档资源(主要) ⭐
搜索文档我想大家都会,用GitHub或者在模块的官网找文档都可以。我在这里推荐一类软件,Zeal,Windos下的离线文档阅读器, Dash, Mac下的离线文档阅读器。
2.3.3 学习Python的网站(辅助)
首先推荐GitHub,全世界最大的同性交友网站,欢迎大家关注 😄 。在GitHub上有很多优秀的开源项目,也有很多翻译的中文文档,可以作为资料来参考。其实我认为GitHub最优秀的一点是他的开源精神,你可以在这里找到很多问题的解决思路,学会在GitHub上找项目也是必要能力之一。
推荐一个线上编辑代码的404网站,Colab,在线编辑,云端运行,还有免费的GPU和TPU可以用。但是使用的前提条件是,会访问404网站。各种论坛社区,比如CSDN, 简书, StackOverflow,
各种大神的技术博客。
各种搜索引擎,也是学习的资源之一,只要你问对了问题,那么他就可以告诉你答案。2.3.4 下载Python相关资源的网站(辅助)
官网在科学上网或者人在国外的情况下,速度会很快,也很方便。但是在国内的时候,客观条件限制下,用镜像也是很好的选择。
Python相关镜像推荐除了以上两个,关于pip的换源可以选择下面两个
需要注意的是,pip换源和conda换源有点不太一样,如果使用conda作为管理工具,优先更改conda的配置而不是conda环境里pip的配置。
2.3.5 能力
学习Python需要有什么能力呢?其实要求并不高,你并不一定需要有很多的计算机背景,数学背景,英语背景。但是,这些非必须的能力会对学习Python有帮助。只是就自己的经验来说,懂点计算机背景,了解些高数知识,掌握一些英语词汇,会让你学习的瓶颈期晚一些出现。就拿Django3.0的文档来说吧,中文文档依然不完整,能看懂英文文档会方便很多。
还有,我认为学Python一定要有的能力是,懒。
懒得去用Excel重复处理任务,才会想用更简单的Pandas
懒得去用Ctrl+C,V收集数据,才会想用更简单的Scrapy
对于这个世界未知事物的好奇心,和一个懒的精神,或许才是学习Python的动力。
3. 写在后面
其实写这篇博客最主要的目的,是希望想要入门Python的朋友们,不要盲目的跟风,根据需求选择技术,三分钟热度并不是好的起点。大学时候在社团,最常和部员们说的话就是,希望大家每周例会按时参加,也希望大家长情一点,不要刚进入大学什么社团活动都觉得新鲜,然后很快就失去兴趣。Python是一门挺有趣的语言,应该会让你长情一些。
学习的过程没有办法抄捷径,速成也意味着很少有精华能沉淀下来,更重要的是,所谓速成大多只做到了“速”,而不一定可以“成”。今年应该是我学习Python的第三个年头,现在的我可能才刚刚入门,在学习socket期间看过《TCP/IP:卷一》,在学习NumPy的时候又买来《NumPy学习指南》,想要提升代码质量的时候又借鉴Java设计模式来学习,入门机器学习的时候又把大学高数课本翻出来……这些并不是必须的,但慢慢的一点点积累,或许有一天就可以悟到什么。直到现在,编程依然不是我的本职工作或专业,但丝毫不妨碍我的好奇心和爱折腾。
想要做,可以做,就行动起来,不可能什么都准备好的时候再开始学习。如果你想学Python,那就行动起来吧。
这里的资源可能想到什么就不定时更新一下,诈诈尸什么的。
Keep learning!