你是如何自学 Python 的?

[Copy link]
see2525 | reply20 | 2021-10-12 09:13:09 | 显示全部楼层 |Reading mode
才发现,本回答收藏数是点赞数的3倍多……你们为何不顺手再点个赞(╯‵□′)╯︵┻━┻ 光收藏不动手是学不好编程滴!!!
[to update 2016-01-26] 整理了零基础python入门教程系列,并提供在线写代码的功能:
Crossin的编程教室 - 编程世界的新手村
欢迎来玩。
---------------------------------------
其实python非常适合初学者入门。相比较其他不少主流编程语言,有更好的可读性,因此上手相对容易。自带的各种模块加上丰富的第三方模块,免去了很多“重复造轮子”的工作,可以更快地写出东西。配置开发环境也不是很复杂,macandlinux都内置了python。另外据我所知,不少学校也开始使用python来教授程序设计课程(比如本人的母校)。
我就是完全通过网上资源自学python的。
从在校时候用python接活赚零花钱,到在创业公司用python开发商业网站和游戏后台。所有遇到的问题,几乎都可以从互联网上的公开资源找到答案。
关于自学python,个人最大的3点经验:
    找一本浅显易懂,例程比较好的教程,从头到尾看下去。不要看很多本,专注于一本。把里面的例程都手打一遍,搞懂为什么。我当时看的是《简明python教程》,不过这本书不是非常适合零基础初学者。零基础推荐《与孩子一起学编程》,或者看我写的教程 Crossin的编程教室 - Python入门。
    去找一个实际项目练手。我当时是因为要做一个网站,不得已要学python。这种条件下的效果比你平时学一门新语言要好很多。所以最好是要有真实的项目做。可以找几个同学一起做个网站之类。注意,真实项目不一定非要是商业项目,你写一个只是自己会用的博客网站也是真实项目,关键是要核心功能完整。Crossin:Python 的练手项目有哪些值得推荐?
    最好能找到一个已经会python的人。问他一点学习规划的建议(上知乎也是个途径),然后在遇到卡壳的地方找他指点。这样会事半功倍。但是,要学会搜索,学会如何更好地提问。没人愿意帮你写作业或是回答“一搜便知”的问题。
然而,别人的经验未必能完全复制。比如我没有说的是,在自学python之前,我已在学校系统学习过其他的编程语言。
对于完全没有编程经验的初学者,在学习python的时候,面对的不仅仅是python这门语言,还需要面临“编程”的一些普遍问题,比如:
    从零开始,不知道从何入手,找了本编程教材发现第二章开始就看不懂了缺少计算机基础知识,被一些教程略过的“常识性”问题卡住遇到问题不知道怎么寻找解决方案看懂语法之后不知道拿来做什么,学完一阵子就又忘了缺少数据结构、设计模式等编程基础知识,只能写出小的程序片段
所以除了前面说的3点经验,给初学编程者的额外建议:
    first要有信心。虽然可能你看了几个小时也没在屏幕上打出一个三角形,或者压根儿就没能把程序运行起来。但相信我,几乎所有程序员一开始都是这么折腾过来的。选择合适的教程。有些书很经典,但未必适合你,可能你写了上万行代码之后再看它会比较好。写代码,然后写更多的代码。光看教程,编不出程序。从书上的例程开始写,再写小程序片段,然后写完整的项目。除了学习编程语言,也兼顾补一点计算机基础,和English。不但要学写代码,还要学会看代码,更要会调试代码。读懂你自己程序的报错信息。再去找些github上的程序,读懂别人的代码。学会查官方文档,用好搜索引擎和开发者社区。
以下喂自己袋盐:
现在有很多人都想学一点编程,但是直接看教程又有点太难下手。
之前有几个朋友都问我能不能指导他们一下入门学个语言,于是我就弄了个微信公众号“Crossin的编程教室”(微信号crossincode)。每天讲一点点很简单的内容。如果有0基础想入门的新手,不如来跟着看看,欢迎加入我们共同学习的队伍。
----------------
20160126to update
基础内容早已讲得差不多了,现在整理成了系列教程,可在公众号里阅读。定期推送一些专题,比如查天气预报、搭建网站、数据采集之类的小项目,还有编程相关的知识和经验文章。也可以直接访问: Crossin的编程教室 - 编程世界的新手村
----------------
20160419to update
开通了知乎专栏:
Crossin的编程教室
主要发一些编程入门和科普向的文章:
    编程初学者如何使用搜索引擎 如何安装 Python 的第三方模块 如何直观地理解程序的运行过程?给伸手党的福利:Python 新手入门引导
内容不断更新中...
Crossin的编程教室(crossincode)
Translated by the Internet, your translation resource information platform, pay attention to the official account [translation information]-Official account:fanyi899
祖国你在我心上 | 2021-10-12 09:13:51 | 显示全部楼层
才发现,本回答收藏数是点赞数的3倍多……你们为何不顺手再点个赞(╯‵□′)╯︵┻━┻ 光收藏不动手是学不好编程滴!!!
[to update 2016-01-26] 整理了零基础python入门教程系列,并提供在线写代码的功能:
Crossin的编程教室 - 编程世界的新手村
欢迎来玩。
---------------------------------------
其实python非常适合初学者入门。相比较其他不少主流编程语言,有更好的可读性,因此上手相对容易。自带的各种模块加上丰富的第三方模块,免去了很多“重复造轮子”的工作,可以更快地写出东西。配置开发环境也不是很复杂,macandlinux都内置了python。另外据我所知,不少学校也开始使用python来教授程序设计课程(比如本人的母校)。
我就是完全通过网上资源自学python的。
从在校时候用python接活赚零花钱,到在创业公司用python开发商业网站和游戏后台。所有遇到的问题,几乎都可以从互联网上的公开资源找到答案。
关于自学python,个人最大的3点经验:
    找一本浅显易懂,例程比较好的教程,从头到尾看下去。不要看很多本,专注于一本。把里面的例程都手打一遍,搞懂为什么。我当时看的是《简明python教程》,不过这本书不是非常适合零基础初学者。零基础推荐《与孩子一起学编程》,或者看我写的教程 Crossin的编程教室 - Python入门。
    去找一个实际项目练手。我当时是因为要做一个网站,不得已要学python。这种条件下的效果比你平时学一门新语言要好很多。所以最好是要有真实的项目做。可以找几个同学一起做个网站之类。注意,真实项目不一定非要是商业项目,你写一个只是自己会用的博客网站也是真实项目,关键是要核心功能完整。Crossin:Python 的练手项目有哪些值得推荐?
    最好能找到一个已经会python的人。问他一点学习规划的建议(上知乎也是个途径),然后在遇到卡壳的地方找他指点。这样会事半功倍。但是,要学会搜索,学会如何更好地提问。没人愿意帮你写作业或是回答“一搜便知”的问题。
然而,别人的经验未必能完全复制。比如我没有说的是,在自学python之前,我已在学校系统学习过其他的编程语言。
对于完全没有编程经验的初学者,在学习python的时候,面对的不仅仅是python这门语言,还需要面临“编程”的一些普遍问题,比如:
    从零开始,不知道从何入手,找了本编程教材发现第二章开始就看不懂了缺少计算机基础知识,被一些教程略过的“常识性”问题卡住遇到问题不知道怎么寻找解决方案看懂语法之后不知道拿来做什么,学完一阵子就又忘了缺少数据结构、设计模式等编程基础知识,只能写出小的程序片段
所以除了前面说的3点经验,给初学编程者的额外建议:
    first要有信心。虽然可能你看了几个小时也没在屏幕上打出一个三角形,或者压根儿就没能把程序运行起来。但相信我,几乎所有程序员一开始都是这么折腾过来的。选择合适的教程。有些书很经典,但未必适合你,可能你写了上万行代码之后再看它会比较好。写代码,然后写更多的代码。光看教程,编不出程序。从书上的例程开始写,再写小程序片段,然后写完整的项目。除了学习编程语言,也兼顾补一点计算机基础,和English。不但要学写代码,还要学会看代码,更要会调试代码。读懂你自己程序的报错信息。再去找些github上的程序,读懂别人的代码。学会查官方文档,用好搜索引擎和开发者社区。
以下喂自己袋盐:
现在有很多人都想学一点编程,但是直接看教程又有点太难下手。
之前有几个朋友都问我能不能指导他们一下入门学个语言,于是我就弄了个微信公众号“Crossin的编程教室”(微信号crossincode)。每天讲一点点很简单的内容。如果有0基础想入门的新手,不如来跟着看看,欢迎加入我们共同学习的队伍。
----------------
20160126to update
基础内容早已讲得差不多了,现在整理成了系列教程,可在公众号里阅读。定期推送一些专题,比如查天气预报、搭建网站、数据采集之类的小项目,还有编程相关的知识和经验文章。也可以直接访问: Crossin的编程教室 - 编程世界的新手村
----------------
20160419to update
开通了知乎专栏:
Crossin的编程教室
主要发一些编程入门和科普向的文章:
    编程初学者如何使用搜索引擎 如何安装 Python 的第三方模块 如何直观地理解程序的运行过程?给伸手党的福利:Python 新手入门引导
内容不断更新中...
Crossin的编程教室(crossincode)
Translated by the Internet, your translation resource information platform, pay attention to the official account [translation information]-Official account:fanyi899
暮然柒 | 2021-10-12 09:14:10 | 显示全部楼层
1. 总体来讲,找几本靠谱的书,由浅入深,边看边练。

我是从去年下半年开始学习Python / ML / CV,利用每天晚上22:00- 01:00的业余时间,每天进行,几乎很少间断。
2. 以下是我自己训练Python的一些小经验。

2.1 基础入门
当然是因工作需要而学,所以有倾向性,会以Data Analysis或者现在时髦的说法叫Data Science方向为主。

01-《a byte of python 中文版》绝对入门级,扫盲,零基础的人都可以看。当时我大概花了三天撸完,照着敲了一遍代码。稍微有点感觉了。

02- 看斯坦福的在线教程,入门级。Python Numpy Tutorial英文好的同学可以看看,这个教程我看的不多。主要是因为自己喜欢看纸质书。

03-同时继续夯实python语言本身,建议看《Python Cookbook 中文版》,我也时不时的会看
2.2 以上基本概念弄熟练后。接下来看你要做什么了?选个方向。
    1、Web开发方向
那么建议看简单的框架flask,那么推荐《Flask Web开发:基于PythonOfWeb应用开发实战》。(我只扫一眼目录,因主要方向不在此处)

    2、数据分析方向
建议看《利用Python进行大数据分析》,非常棒!强烈建议看。主要讲Pandas库,讲数据分析。很多金融巨头,用Python进行数据分析。引用大神Kirat的话说,“它正在快速代替主流金融机构中使用的工具和语言,并成为事实上的标准”。我花了1个月左右时间,一个字一个字啃完。同时边敲代码。

    3、科学计算方向
建议看《python_sciusepython进行科学计算》。

    4、AI的机器学习方向
建议看《Hands-on ML with Scikit-learn and TensorFlow》,还没有中文版,我在看。若有同学需要中文版,可以告知我,我视需求而定,是否将其翻译成中文版。

    5、AI的计算机视觉方向
建议看《Python计算机视觉编程》,我还在看,虽然看得不多。

    6、网络爬虫方向
这里不多作介绍。
2.3  夯实:若有同学对【数据分析方向】感兴趣
这里强烈推荐Yupeng Jiang博士撰写的《三天搞定Python基本功》,只用三天时间可以了解Python数据分析的广度和所涉及的概念,是诚意之作,十分难得!因原文是用英文写成,给英国伦敦大学学院的本科生、研究生上课用的。我将其翻译成了中文,便于自己将来快速复习用。在征得jiang博士的同意后,分享给大家。链接:

    《三天搞定Python基础概念之第一天》Day1《三天搞定Python基础概念之第二天》Day2《三天搞定Python基础概念之第三天》 Day3
英文原版可见链接:三天搞定Python基本功
2.4.  进阶:顺着【数据分析】这个方向,把金融类的数据分析搞透彻。
在看完《利用Python进行数据分析》之后,强烈建议看《Python 金融大数据分析》一书。

第一次在知乎上回复。说的不好,请见谅。
2017year9month27日晚
Translated by the Internet, your translation resource information platform, pay attention to the official account [translation information]-Official account:fanyi899
ezbdm7678 | 2021-10-12 09:14:43 | 显示全部楼层
强烈推荐一本书!!
这个题回答太多了,看视频打代码什么的都不靠谱,对于零基础的人来说,资料越多就越乱,最好的办法就是找一本好书,跟着从头到尾学,无任何编程基础,也能一两个月入门。
我要推荐的就是一款爆款书,当时我就是被这本书带着入门的,所以非常感谢这本书,也想把这么好的书让更多新手知道


就是这个书,淘宝当当亚马逊都有,六七十块钱吧。真的是非常物超所值,这本书会让你觉得编程so easy,so因吹斯汀
这本书对于新手真是太友好了。真的是保姆级的手把手教程。没有任何编程基础的人也完全可以学会python,这本书我真的怎么夸他都不为过。看了那么多python书,最适合新手入门的就是这本
    书整体分为两部分,基础语法和项目实践,我随便摘几个目录贴一下吧












  基础语法部分就是介绍python语法,一些最基本的语法和编程的概念
  项目实践总共有三个项目,一个外星人入侵的游戏,一个数据可视化程序,一个web应用程序。程序很有趣,并且讲解非常细腻,很多书写项目部分的时候直接把代码扔出来,没有分解没有讲解,就算跟着打完一遍,也没有任何收获,就像练习打字一样。这本书讲解也是保姆级的教程
补充一下,书中用的编辑器不好用,打python代码一般都是用pycharm,然后配置ananconda。对新手来说,第一次配置环境还是有难度的,所以我出了个保姆级视频教程手把手教大家一步步装,视频在b站,链接https://b23.tv/62qr9z。希望能帮助到大家。b站我也做了个python入门教学视频系列,大家可以关注下。
<hr/>一些小建议小tips:
  如果是新手的话,建议语法部分跟着书打代码,所有代码都打一遍,无论简单还是复杂,新手要多打代码才有手感
  语法部分每一小节都有几个习题,这本书的习题都不难,并且量很小,而且都是本节讲过的东西,参照前面的讲解都能做出来。新手的话,建议把习题都做了,即使一眼就能看出来怎么写也要打一遍,因为总会有莫名其妙的各种问题,不能眼高手低,要实践
<hr/>     建议用时:
下图是我当时学python的时候写的日志,记录自己每天做了什么,以及明天计划,当时就是这样的进度,大概不到一个月学完了语法(我这个速度不算快),也就是前11章,然后是后面的项目部分跟着打代码,这个做了多久我忘了


这本书项目部分我没有打完,然后紧接着有用python的项目,我就觉得自己入门了,豁然开朗了。学会python对于别的编程语言也有很大帮助因为思想差不多,只是语法不同。
你们如果有人吃了我的安利买了这本书开始学习并有所收获,欢迎大家来我这儿反馈交流哦,另外,我建了个编程交流QQ群,欢迎来唠嗑:1165967079
…………………………补充内容的分隔符
评论有人问网易课是什么,我解释下啊,我在学python的同时还在学c++和深度学习,网易课不是python的,是深度学习的课。
所以你学python如果全天都在学的话,进度得是我的双倍或三倍哦⊙∀⊙
…………………………………………一个手动分隔符
很多人学编程最大的阻力不是学不会,而是坚持不下去,学了三天就扔了。
所以给自制力不够的朋友推荐一个课:夜曲编程。这个宝藏课程是我在百词斩背单词的时候,突然发现的。一直觉得百词斩做的还不错,就去了解了一下。这个课延续了百词斩一贯的有趣的画风,把很多概念做成了漫画形式,易懂又有趣,对初学者特别友好。
例如下面对“赋值”的解释,就很形象:


另一个优点是用手机就能学,每天十分钟,一个月学会python,学的还不痛苦。
最重要的!!这个能让你坚持下去的原因是:坚持完成80%的题,就会送颜值很高的蓝牙键盘!当你想放弃了,想一想蓝牙键盘就又坚持了一下,坚持着坚持着就学完了。感兴趣的朋友去微信公众号搜“夜曲编程”就行了。真 · 良心推荐!!推荐给觉得编程无聊或者容易半途而废的朋友!

There are more resources in this post

What do you need Sign in Can I download or view it without an account?Join now Scan and login on wechat

x
Translated by the Internet, your translation resource information platform, pay attention to the official account [translation information]-Official account:fanyi899
The death of peach714 | 2021-10-12 09:15:23 | 显示全部楼层
这是我在过去几家公司招聘到工程师,Python入职培训的过程。

时间分为4周,全部自学,仅提供大纲。适用于Web方向:

1、Week1:读完《简明Python教程》,适应Python开发环境

2、Week2:写个爬虫,需要深入了解re、urllib2、sqlite3、threading,Queue等几个模块。需要用上多线程抓取,正则表达式分析,并发资源控制,重新开启程序自动继续抓取和分析

3、Week3:学习一种Web开发框架,推荐Flask、webpy之类的,学个数据库接口如sqlite3,写个简单的web应用如博客

4、Week4:给产品做个小功能并走完测试和上线流程,各个时期是不同的

我在之前的几家公司招聘工程师时,学过Python的其实较少。更常见的情况是人聪明,招来再学Python。就是按照如上流程。这个流程安排的挺轻松的,我找到的所有人都成功完成了这个流程。并且之后工作也很顺利。
Translated by the Internet, your translation resource information platform, pay attention to the official account [translation information]-Official account:fanyi899
柔2爷吉祥 | 2021-10-12 09:16:22 | 显示全部楼层
我在学习的过程中,深深的觉得对于成人或者进入职场的人来说,学习一门新的知识,目的不在于积累,而在于解决问题。

所以这就要求我想明白3个问题:
1,学习python,要解决什么问题?解决这个问题,是要为了确定学习方向。
2,要学哪些东西?解决这个问题,是为了规划好学习路径,建立学习地图。
3,怎样学?解决这个问题,是为了找到高效学习的方法。
1,选择好方向

我要学习python的目的不是为了解这门语言,而是为了要学会运用这门语言来解决问题。
butpython的应用方向,实在太广了。在python基础知识学完之后,如果应用方向不同,要学习的东西也会大不同。

我不能说我要做web开发,学完python基础知识,跑去学numpy,pandas等知识,也不能说我要用python做数据分析,学完python基础知识,然后就跑去学django,flask框架。这个道理,就跟我们想要去泰国旅行,肯定不会买去日本的机票一样,很简单,但是我们不得不承认,还是会有人犯迷糊,上来就开干。

我学习python,是因为在工作中慢慢了解到python在数据分析方面,基本涵盖了“数据获取→数据处理→数据分析→数据可视化”这个流程中每个环节,是数据分析的利器,话说这风骚的操作,也是没谁了。

2,规划好路径
当我确定好方向后,下一步骤就是顺着这个方向,建立好我自己的学习路径地图。
这个路径是1个系统性的逻辑主线,这个主线会让我知道每个部分需要完成的目标是什么,需要学习哪些知识点,哪些知识是暂时不必要的。然后每学习一个部分,我就能够有一些实际的成果输出,利用成果产出来形成正向刺激,激励后续的学习。
而且,如果我们身在职场,大多时候我们是没有很大块的时间来集中学习的。我们的学习时间被分割在了一些碎片化的时间里。在碎片化的时间里,系统性的学习一门知识,更需要有一个贯穿前后,系统的逻辑主线,来串联所有相关碎片化的时间的学习。
当我确定好学习python的数据分析知识,就按照数据分析的流程“数据获取→数据处理→数据分析→数据可视化”这个路径,给自己建立了学习地图:
1,python基础知识
2,爬虫基本知识+sql
3,numpy
4,pandas
5,matplotlib
6,sklearn
7,统计学与概率论


3,对基本概念建立认知
python是我学习的第一门编程语言,我在开始学习python的时候,是一个连什么是字符串都不知道小白。所以对我来说,最重要的开始是,首先对这一领域的基本概念建立认知!

事实上,对一门领域完全零基础的人,想要开始学习它的话,真正重要的工作是先对这门领域的基本概念建立认知。
举个例子,比如我在看到教程中有句话是“为变量赋值”,那我至少得知道,什么是变量?赋值是什么意思?

不知道为什么这么重要的一个开始,竟没有答案提到,更不知道是大家都天赋异禀,觉得不屑于提起这基础的步骤,还是很多人已经忘记了从小白一路走过来的痛苦和挣扎。人是会篡改记忆的,会认为现在拥有的都是轻松获得的,但真实的经历永远都是坎坷曲折的。

看到答案中又不少提到廖雪峰老师的博客,廖雪峰老师的博客当然是极好的,但说实话,对完全零基础的人还是不适合(如果我们之前有其他编程语言基础,看廖老师的博客是最好的),甚至连《python简明教程》也不适合。

我遇到的第一个坑,就是我作为一个连什么是字符串都不知道小白,就去看廖老师的教程,然后就没有然后了。后来在网上看到侯爵老师的书。



这本书用生活中常见的物品做类比和视觉化解说,用极其通俗易懂的语言,让我对python语言以及编程领域的基本概念建立了基本认知。
我想我们一定遇到不少的教程,帮我们解释概念的时候,上来就是这个概念其实可以理解成COfXXX,C#OfXXX,我他么的要学过C,还他么跑过来问小白如何入门python?

这些教程典型的通病就是,教学者用一个我们不懂的概念去解释另一个我们不懂的概念,然后我们还是不懂。因为教学者提前预设了作为0基础的我们的立场:已经有其他编程语言基础,只是没有接触python.

但其实,对真正如我一样的0基础的小白来说,大多时候,python是我们学习的第一门编程语言。所以这个时候,对我们来说,学习python,不仅是学习这门语言本身,还是在借着这门语言,帮我们建立对编程世界的一些基本概念的认知。

当我入了门之后,就是顺着在第二步建立的学习路径,一路升级打怪,毕竟,我的征途是星辰大海!

4,最后,学习中需要注意的问题
A,一开始绝不陷入底层原理和细枝末节的纠缠
这个坑,是把我坑的最深的坑。
举个例子,我学到函数的时候,我在开始的时候只需要,学会怎么定义函数,怎么调用函数这些基础知识,完全不需要一开始就深入到,研究函数参数的传递规则,到底是值传递,还是引用传递。

不是说这底层知识不重要,至少在入门的时候,我们不用一上来就深入这个层面。因为知识的学习,是一个线性的,从潜入深的顺序。如果一开始,就眉毛胡子一把抓,不分主次,可能我们很快就会体会到“从入门到放弃”是一种什么样的感觉。

而且我们在后续的学习过程中,其本身就是在“运用中深入理解,在深入理解中优化应用”。相互印证理解,是一种自然而然的深入学习过程。

B,最好是按照系统性的课程或书本来学习
既然在这个领域是新手,先接受一个已经存在的系统,再在上面修修改改,是最适合的方案。作为新手,如果依靠自学来学习一门领域的知识,根据我的经验,我依然认为最好的老师,仍旧是成体系的课程或书本。

网上的文章或帖子,其实非常不适合充当我们系统性的学习一门知识的教材,因为它是非常碎片化的知识,东一榔头西一棒子,不成体系。
不要指望自己能把散落的信息整合成系统的,那是高手要做的事情。不过网上的文章或帖子,可以作为我们对某些细节的查漏补缺的参考。

C,以能用起来,解决问题为指导原则
在工作中,需要的更多的是一种解决问题的工程性思维,所以很多时候,我们能掉包解决问题,就没必要自己造轮子。

举个例子,boss要去机场,那我只要会开车,驱车把boss送到目的地就行,而不需要我去研究怎么怎么造车轮,怎么造发动机,怎么造电瓶。。。。。。

当然,如果我们学有余力,能深入,肯定是只好不坏。但还是那句话,开始的时候,不眉毛胡子一把抓。

D,没有什么牛逼的事情是能够速成的,越是底层的、收益周期越长的技能越是这样。
“大道甚夷,而人好径,终为所误”。我们总会在踩了无数的坑后,才恍然大悟:捷径往往是最长的弯路。学习一门领域的知识,对于普通人人在短时间内从0reach1入个门,倒是不难,但是从1reach10,到100,进阶为高手,没有长时间的投入和刻意练习,无异于痴人说梦。当我理解这个道理,也知道自己资质并非属于天选之子的时候,就不会急于求成而去费尽心思想找到一条捷径:试图用3个月的时间,去完成别人用了3年才能做到的事情。
以上,只要用对方法,有一个完整的学习脉络规划和逻辑主线的贯穿,循序渐进,学Python就能很高效。
PS:既然看到这里,在收藏的同时,也请不吝啬的点个赞呗

There are more resources in this post

What do you need Sign in Can I download or view it without an account?Join now Scan and login on wechat

x
Translated by the Internet, your translation resource information platform, pay attention to the official account [translation information]-Official account:fanyi899
高原789 | 2021-10-12 09:17:09 | 显示全部楼层
整理的一个 python web 学习路线,这基本就是笔者自学后来知乎做后端的学习路线。
入门基础
编程语言: Python
Python入门相对容易又可以干很多事(网站,运维,data,爬虫等),是一门方便的工具语言。2016yearTIOBE排名显示Python已经名列第四,成为脚本语言之首。 国外的Youtube,Instagram,Pinterest,Reddit,Dropbox,Disqus, Quora等知名应用一开始都是基于Python构建,国内的豆瓣,知乎,果壳,饿了么,搜狐等也是Python应用的典型。这也给了国内Python开发者一阵强心剂,Python的生态环境可以支撑起重量级的 产品。这里不想挑起语言之争,php,nodejs,java,ruby等都有丰富的生态环境。不过目前来看,技术选型用Python在招聘、学习、培训、敏捷开发等方面还是一个比较折中的选择(主要在于人,而不是语言)。 python,ruby之类的动态语言优势在于其生产力,你能在极短时间内就搭建出原型从而赢得产品竞争。 推荐一下几本个人认为比较好的Python书籍:

    《python-guide》 requests作者写的guide,偏向工程方面《use python》 use python《A Byte of Python》 一百多页的小书,可以快速熟悉Python语言。《Python核心编程》 比较全面的Python书籍,介绍了Python语言的方方面面。《Dive Into Python》 一本免费的开源书《Fluent Python》 Python进阶的好书,没有之一,涉及了很多Python高级主题和实现特性。《Python3 Cookbook》 Python进阶读物,汇集了很多技巧。《Python高级编程》 豆瓣工程师董伟明先生写的python高级编程 ppt
当然还有Python的官方文档作为参考,不过有些文档比较晦涩,还是推荐书籍入门。网上目前也可以搜到很多免费的电子书。 如果有时间可以看看国内廖雪峰写的Python教程,简单易懂,就是跳跃有点大。
算法与数据结构
编写良好的代码需要了解常用的算法和数据结构,虽然你可能很少会自己实现,但是对于Python语言中一些常用数据结构如list, tuple, set, frozenset, dictandcollections模块中的OrderedDict, defaultdict, deque, namedtuple, Counter等应该知道什么时候用。最主要的还是了解算法中递归,二分等常用思想,写出高效易用的代码。如果你想在线练习,可以做一些Acm基础题或者去leetcode等网站刷题。 推荐书籍:

    《算法导论》 你可以挑选感兴趣的章节啃一啃,也可以去网易公开课看下视频教程。如果不是计算机专业的可以看下《计算机科学导论》这门公开课,正好也是以Python语言讲解的。

计算机网络
对于应用开发者来说大部分时间可能不太会接触特别底层的问题,但是了解网络的运行原理还是必要的。网上有个面试题 从输入URL 到页面加载完成的过程中都发生了什么事情? 如果对其中大部分的概念都了解就算是入门了。网络相关书籍可以随便找一本看看。Http协议对于web开发者来说比较重要,需要深入了解。推荐书籍:

    《图解Http》 一本小白入门Http协议的好书,有大量图片示例。《Http权威指南》 Http协议最权威的讲解,大部头著作,可以看看最基础的部分。《网络爬虫教程》 非常不错的爬虫教程。感谢原作者,其实感觉这种把学习的内容总结成小书的方式很好。《Python3 网络爬虫实战》

Linux系统
大部分Python应用都是跑在Linux服务器上的,大部分开源服务器软件使用的也是linux系统,即使日常工作不使用linux,一些基本的linux命令也要了解。 比如常用的文件操作,目录操作,进程操作等。你可以使用类unix系统mac或者linuxeditionubuntu作为学习环境。 推荐:

    《Linux工具快速教程》《CONQUERING THE COMMAND LINE》 掌握这上面的命令基本就可以满足日常需求了。《鸟哥的Linux私房菜.基础学习篇》 浅显易懂,入门Linux命令的好书。

数据库
现在网站业务后端用得比较多的有三种类型的数据库,关系型数据库(mysql等),文档型数据库(mongodb等),和内存型数据库(redis等)。三种数据库各有优势和特色,后端程序员需要了解下不同类型数据库的使用方法和应用场景,灵活应用到后端代码中。关于各种数据库网上已经有不少资料,读者可以自行搜索学习,比较重要的是 mysql and redis.

python相关库的使用
python一大优势在于数量丰富的库,灵活使用各种python库能帮助我们快速做出产品。作为web开发者,你需要了解常用python库和框架的使用,比如django/flask/tornado/sqlalchemy/requests/pandasAnd so on.

版本控制
目前最流行的应该就是git了。版本控制工具是多人协作必不可少的工具,入门的程序员需要掌握基本的git命令,可以把github作为个人练习的工具。

    《语义化版本控制》《Pro Git》

Web 服务器
Nginx 目前很流行,使用比较广泛,推荐学习和使用。熟悉 LNMP 架构(Linux + Nginx + Mysql + Python),目前很多公司采用了都是多语言+微服务架构。

前端知识
基本的 html,css,javascript 需要有所了解。很多后端工程师需要做一些工具或者管理后台之类的,了解前端知识会有帮助。

学习和搜索能力
初学者碰到的大部分技术问题都是可以通过 google 解决的,用好 google/stackoverflow/github 和各种技术论坛、牛人博客等能帮助你了解最新的技术。

专业素养
公司做项目不是自己过家家,需要你具备写文档,注释,单元测试,沟通表达、与人协作、处理业务的能力。如果你现在还不了解一个正规python项目都有哪些组建构成,请去github克隆一份知名的代码仓库,花点时间仔细分析下它的项目结构和源代码。 比如著名网站reddit代码已经开源,大部分python实现,可以参考下。另外很多著名的python库,比如requests/flask等也可以作为参考。从笔者短暂的从业经历来看,大部分自学python的人不怎么遵守代码规范(pep8), 不知道或者不重视单元测试(写个函数print下就觉得OK了),不知道怎么写注释和文档(docstring听过吗?)。所以希望学习python的你能遵守工程实践,具备良好的职业素养和编码习惯,推荐阅读《代码大全》《编程匠艺》之类的工程相关的书。

    《程序员的职业素养》

后端技术栈
对于技能需求可以在拉勾上搜一下Python的职位,看看各个公司对Python的要求。或者你可以写个拉勾网的爬虫,对数据做一个简单的统计,笔者当初找工作就是这么干的。 另外,真正做项目还需要你熟悉python的各种库和框架,比如django/flask/tornado/requests/sqlalchemy/unittest/celery等等,掌握了合适的工具才能快速上手做东西,公司恨不得你第一天入职第二天就能写项目。 所以,在你入了门以后请尽快熟悉python web的技术栈。公司不管你会什么算法,只在乎你的生产力(有时候技术本身不重要,它的价值在于对业务、用户、顾客的贡献). 推荐一些文章供参考:

    《全栈增长工程师指南》《web开发路线图》《后端都要学习什么?》《PYTHON招聘需求与技能体系》《PYTHON后端相关技术/工具栈》
http://python-web-guide.readthedocs.io/zh/latest/
Translated by the Internet, your translation resource information platform, pay attention to the official account [translation information]-Official account:fanyi899
苏_杨 | 2021-10-12 09:17:51 | 显示全部楼层
to update: Collection7032次,2206个赞。还请各位给答主一点关怀,多点个赞啦。
学习python有一年多了,也做了几个项目,分享下走过的路。
答主学习一年已上线项目(均开源在本人github):
django搭建的在线教育平台 scrapy后端爬取数据,django前台搭建的搜索引擎
下面是学习过程:
1. 没有基础的建议先打好基础,有基础的可以看文字,完全零基础的可以跟着一些入门视频学习。不要怕基础枯燥,基础真正打好, 之后做项目你会有种打通经络的快感。编程之路开始还请不要功利,得耐得住寂寞,枯燥。
2. 基础知识学会了,这时候可以学习一些常用第三方库的使用,如requests等。这时候你可以开始着手现实需求来做一些自己的小项目。我当时在学request的时候开始做第一个小项目模拟登录的选课助手。靠着这个得了一门选修课95分高分。当然这个阶段也可以做一些小爬虫,反正看你自己正好需求什么,自己的想法。
更新一个答主比之前推荐的入门视频更适合0基础小白的编程入门工具: “夜曲编程”(它是老牌学习软件百词斩(瞬间被唤醒卡片滑动背单词的记忆)推出的卡片交互式编程学习。他们家有 Python入门课,课如其名,非常适合入门,但是内容依旧扎实。
没错,还是卡片~ 编程是一门理论加实践的课程。通过卡片交互通关,让你像收集卡片一样,系统分为概念卡和代码卡。概念卡学会理论。代码卡学会实践。特别是在学习代码时,可以直接在线运行代码,打开浏览器就可以开始学习!以前很多小白,都被劝退在了代码运行环境的配置。复习可通过卡片栏中查看所有卡片。点开某个卡片复习,即使是一个最简单的hello world 都介绍的非常详细! 按时打卡完成任务还可以获得蓝牙键盘等实物奖品激励。
另外在9month1号之后,有专门针对大学生活动计划,可以去他们家公众号咨询一下,力度挺大的。包括现在可以白嫖体验,入门课程只要回复「免费教程」就可以薅羊毛了,看看适不适合自己再说吧。
3. 开始实战项目:
实战项目阶段,开始进行框架的学习:面向网站开发的django,flask。爬虫方面的scrapy. 不要直接看文档!!!但绝对要学会看文档。学习项目有可能你遇到的不是最新的教程,那么此时你可以尝试答主自创的"左圆右方"学习法:
同时做两个完全的项目,一个与教程的老版本保持完全的一致,比如各种安装的包的版本等。另一个直接上各种最新的版本,同步编码。编程实战学习经常会有一些没有和老师保持旧版本遇到各种神奇的bug无从解决,但是我们又不能拘泥于旧版本。此时我们可以在保持完全一致的旧版本上不报错的学习到基本知识,又可以在新版本上了解到版本更新的变化。至少我们可以以旧推新,顺藤摸瓜。
在新版本中我们当然会遇到很多问题,遇到报错,不要迷信于各种博客,而是应该回归最新的文档(英文版,英语不好使用网页翻译查看)。此时我们会在摸索中,get到文档的工具化使用,拒绝一切不从实际项目出发的文档机械化阅读。我个人认为文档的了解应该是知道我要用的哪个该查哪里即可。
4. 学习Python不要只拘泥于python本身,你要在项目之余,对于周边的知识也要进行了解学习。
以Python为中心,往外慢慢扩展。比如部署时觉得部署难,学点linux.对于数据库不熟悉,用python爬点数据试试存放在不同的数据库。总之以已学的为中心,慢慢扩散开自己的知识点圈。
5. 如果你是想吃饭,Python目前在小城市还是比较难找到工作的,或许你可以作为兴趣来学习。但是推荐还是学习一门其他语言来作为行走江湖的本钱,比如java。答主已经有了一个从java圈往python圈搞python实现的小计划。
雄关漫道真如铁,而今迈步从头越。大家共勉。
看到最后的都是真爱:
学习路上记点笔记,发点文章,github多放点自己的代码。对于自己找工作都会有所帮助。
Translated by the Internet, your translation resource information platform, pay attention to the official account [translation information]-Official account:fanyi899
故国人生 | 2021-10-12 09:18:32 | 显示全部楼层
人越长大越明白,开挂太多的经历往往都是包装过的甚至是虚假的,对普通人没有借鉴意义。我很自豪自己是一位普通开发者,在技术成长道路上没有太多明显的开挂经历,我所说的发自肺腑深入肌肤,希望能对迷茫的后辈们起到一点指示作用。
我上学比周围的人要早2年,经常被身边的人夸赞年轻。刚毕业的时候在千橡游戏部门参与开发一个大型的网页MMO游戏,平时在架构师搭好的长连接通信框架和复杂的游戏业务架构的基础上,实现游戏服务器繁多的业务功能。当时服务器开发用的是JavalanguageMina框架,Netty还没有问世,Redis也还没出来。在短命的游戏周期定律下,这个项目让人感到非常意外,打开它的官网地址,至今还活的好好的 http://l.mop.com




那时候技术上积累还比较少,但我本人有一个优点就是技术兴趣广泛。空闲的时候除了深入学习Java之外,还会在网上找一些入门教程去学习一下Python语言,但是因为断断续续,Python语言入门了好多次。同时我还对网页感兴趣,会尝试自己去实现一些好玩的动态效果,比如动态的树形菜单和tab页之类的。除此之外我还尝试学习SICP课程的Lisp语言,试图深入理解语言内部机制。偶尔还要翻翻Unix环境高级编程,不过那个时候看得好吃力,真是硬着头皮在啃。




游戏业务做了两年之后感觉有些厌倦,似乎总有些本质的东西怎么也看不清,职业上处于迷茫摇摆期。
一时冲动下决心切换语言栈,从Java语言换到的Python语言,通过自己的业余时间撸了一些小项目获得了宝贵的Python入门经验,现在看来这些小项目都很简单。




Django实现的物品属性编辑器(JSON结构),界面挺原始的,那个时候还没有bootstrap,全凭自己手撸css。表示自学Django很痛苦,入门成本太高,它就好比Java语言的Spring框架,有太多的先验约定需要遵守。另外自己还没有正式的web开发经验,做web似乎是一个全新的技术领域。自己用web.py撸了一个很灰暗的个人网站,可以挂一些自己平时练习的小作品的代码和文字分享。当时因为有很多惨痛失败的面试经历,所以将面试时遇到的一些好玩的笔试题在上面展示了自己的解决方案的代码实现。


我用requests写了爬虫,将豆瓣某些大型小组的所有用户id给爬下来,然后挨个发送站内信邀请他们给我投票,发的人多了总会有不少人会点进来,我就是靠这个在豆瓣的某些投票活动中拿到了一等奖,得到了不少的奖品,比如ipad什么的。后来豆瓣把站内信的API加了日访问数量限制,以及站内信垃圾内容分类功能,还增加了IP爬虫的封禁策略,然后我就没能在犯罪的道路上走得更远了^_^




还有其它的一些我都记不起来了,因为挂在Google Code上,Google Code挂了之后就再也找不到了。当时没有师傅带我,全靠自己胡乱摸索。因为缺少Python的正式项目经验,所以在换工作的时候遇到了一些坑——不好找工作。
幸好自己有一点游戏开发经验,总算找到了一家使用Python开发游戏的小公司没想多少就直接进去了,结果只待了很短的时间。这个公司有很大的问题,里面一个自称是大牛的哥们经常吹嘘自己多牛逼,周围的人也真的以为他很牛,直到我仔细看了他写得聊天模块的代码才知道他从头到尾一直在吹牛逼,这个聊天模块性能问题太大了。比如查询一个人有多少未读消息需要将这个人的所有消息内容从mongo中读出来,然后在内存遍历统计,我是看得傻了眼。我进来之后他没过多久就离职了,应该是知道自己快骗不下去了。不过我也没过多久就走了,因为我发现整个公司吹牛的可不是一个人,上面的总监也整天在QQ群里吹嘘,上梁不正下梁歪,还是走吧!
数年之后我面试了一个后辈,它在这个公司的另一个部门待过,沟通了之后才知道当时的游戏部门挺了一年多后终于彻底解散了。




然后我去了果壳网做Python Web研发,一呆就是三年,这三年一直沉浸于全站Python后台业务的研发工作,经历了完整的服务拆分的全过程。技术部完全使用flask框架,因为用户量不大,所以性能方面无需顾虑太多,大多数业务都是CRUD代码实现,完全通过数据库搞定,只有少量的业务才会用到Redis缓存。如果说以前的Python经验都是野路子,那么现在也有了根正苗红的Python经验了。经过了这三年的锻炼,用Python写一个网站对于我个人来说那是小菜一碟了。




不过当时因为自己的Python经验不是很足,承担不了特别核心的技术工作,业务上倒是几乎全被我打包了,核心的技术工作是由另一位轮子功夫很厉害的哥们担当,一直很佩服。
我平时很喜欢朝技术深处钻,在深入阅读了GunicornandWerkzeug源码之后也开始尝试自己造轮子了。我的第一个轮子是一个多进程的任务调度器。通过首次造轮子的体验,信心倍增。于是一扇门打开了——我要造更多的轮子。没想过要把轮子用在公司的项目上,就是自己撸着玩,每造一个,感觉自己离大神的路就进了一步。
通过造了很多个轮子之后我在技术的路上获得了一定程度的自由,一种不受太多束缚的感觉,即使不用现成的框架技术,我也可以自己实现,虽然可能功能上没那么全面,但是够用。更重要的是,我吃透了内部原理,不再需要完全遵照框架手册来编写代码。


后来我来到了现在的掌阅又重新搞起了Java,还有Golang,以前感到迷惑的东西都已经不再迷惑了(提前进入不惑之年^_^)。掰开手指一算,发现今年已经三十岁,我也开始夸身边那些刚毕业的小伙子们多么多么年轻。在中国,这个年纪的IT人员似乎离退休已经不是很远了。
到了今年年初我开始尝试写知乎专栏,经营微信公众号「码洞」,短短半年时间已经原创了大约60篇文章有余,内容有浅有深,写作能力在不断的练习中得到了大幅的提升。
今年还完成了两部个人的技术作品《深入理解RPC》和《Redis 深度历险》,感兴趣的读者点击下面的连接进行阅读。
《Redis 深度历险:核心原理与应用实践》


《深入理解 RPC : 基于 Python 自建分布式高并发 RPC 服务》

There are more resources in this post

What do you need Sign in Can I download or view it without an account?Join now Scan and login on wechat

x
Translated by the Internet, your translation resource information platform, pay attention to the official account [translation information]-Official account:fanyi899
本文作者:侯爵,麻瓜编程创始人、课程设计师
看到不少答主都是计算机科班出身的,但对于我来说,设计系毕业、二十几岁才下决心从零开始学编程,我的 Python 学习经历注定是曲折的。

想学 Python 的时候,
科班出身的人只要花点时间,就能顺顺当当学会了,C 都学会了 Python 有什么难的?
非科班出身的人总是会引发各种对抗力量,这个库怎么安不上?这段程序是怎么运行的?

写程序遇到 bug 的时候,
科班出身的人先想到的是怎么排查 bug.
非科班出身的人先想到的是怀疑人生,怎么会有这种问题?我是不是不适合学编程?

学新东西的时候,
科班出身的人是在一个稳固的地基上添砖加瓦,底子稳、塌不了。
非科班出身的人是在拿着拼图的一角寻找关联的碎片,只有拼的足够多,最后才能连接成完整的知识网络。

很遗憾我没有在学校接受过系统的编程训练,自学编程的过程中碰了很多壁、走了很多弯路。但是回过头来看,正是这段折腾的经历让我一生受益。

我以前也试图提升过自己的学习能力,但真不像鸡汤文里说的学习某种模式能改变你的思维、加入一个读书会能让你成为终生学习者,不是这样的。只有学一个自己不擅长的东西、把自己推出舒适区、反复碰壁,这个过程才让我学会了如何学习。
<hr/>从循规蹈矩到自寻出路

几年前,当我决心从零开始学编程的时候,我制定了一个「每天编程一小时」的计划。
和大多数人一样,我想系统的、有体系的去学习,跟着教程从基础学起。那时候还在印象笔记建了一个笔记本叫《每天编程一小时》,收集一些好的教程,根据知识点试着去列一套成体系的学习路径。
但是开始跟着教程学的时候,问题来了。看了几章之后,突然就会出现看不懂的概念,知识就断层了,就跟上数学课捡了根笔之后发现后面的就听不懂了,但我也没错过什么啊。我又试着跟着示例代码敲,敲完也不知道这段代码是怎么运作的,自己只要一拓展就会出错,后来敲烦了就直接复制粘贴,感觉学的特别迷茫。
实在学不下去的时候,就换一本教程,基本都是从第一章开始觉得会了,但实际上又不知道学的这个要怎么去使,这种感觉就一直在我的脑子里嗡嗡的转。到后来那一个概念我都看了六遍了,谁讲都那样,但还是不会使。
这时候开始对系统学习的方法有点怀疑了,大家都说要从底层学起、看大量书单,但会不会这种系统学习的方式不适合我这个非科班出身的新手?毕竟,我已经没有4年时间来学编程了啊,我每天只有1小时能用来学习,再这样继续看各种琐碎的语法细节,我就要失去耐心了。
我想,不如先写点小项目练练手。于是我开始从一些简单的程序写起,写一个汇率转换的公式、写一个随机生成姓名的小脚本、写一个把桌面文件自动归类的小脚本、写一个煎蛋的小爬虫,可能这些程序在专业人士眼里都算不上是项目,几行代码和简单语法就能搞定了,但对于我来说,这些程序就是一个个使用情景,我从这些使用情景中理解了概念的真正意义。
比如说,之前看教程总是不明白作用域和缩进的关系,自己写代码的时候就发现了,不缩进就会报错啊,经历过几次就再也不会写错了。
其实很多概念都是基于无数个场景的抽象,抽象了之后就会少了很多细节,给人一种太笼统、太晦涩的感觉。而让人印象最深刻的是场景,就像提到「烫」的时候,第一时间想到的是被烫的场景和感觉,而不是烫的定义。
所以说,开始动手写练手项目,是我自学编程的一个重大转折点,让我开始把编程用起来了。
当然,也会遇到各种状况。写文件归类脚本的时候,不小心把桌面上的文件都删了。写煎蛋爬虫的时候,第一次能正常运行,第二次运行的时候我的 ip 就被封了、爬不了了。如果是复制粘贴别人写的程序,这样的状况会让我大骂坑爹。但自己写的程序,每一个都是我的宝贝,我会有很强的动力去解决她们的问题、完善她们。
<hr/>从报错恐惧症到巧解难题

迈过第一个坎之后,我开始尝试一些更大的项目,试着用 Django 框架搭建一个网站,结果很受挫。敲了代码之后,不光没运行,结果还特么报错,这么来回几次之后,真的有种想要砸电脑的感觉。


有一次一个报错卡了好几天都没解决,我觉得这样下去不行了,于是找了一个国外的 Code Mentor 去有偿请教他,我们 Skype 讨论了一个小时,最后虽然解决了,但那是用他的思路去实现的,而我期望的是沿着我的思路去解决这个问题。
发现别人没办法帮自己走出困境是有点沮丧的,但是可能挣扎的过程也是我学习的一部分。发现无路可走了,就只能靠提升自己的解决问题能力来突破困境。
经历过这次求助之后,我发现,如果我不能清楚准确的描述问题,我就没办法解决这个问题。而问题一旦被清楚准确的描述了,也就变得很容易解决了。探索了一段时间之后,我甚至形成了一个自己的解决问题方法论:

第一步:提出假设
假设阶段是最重要的,如果你对一个事情没有假设,说明你没有思考。有时候之所以会痛苦,就是因为发现事实和你认为最正确的假设是不一样的。在阿加莎的小说里,平庸的侦探会为自己的推断找各种牵强的证据,而波洛会勇于根据事实不断推翻自己的推断。
在假设阶段,我会从我的角度对这个问题做几个推断。报了一个错之后,我脑子里会有若干个假设,是环境错误导致的,还是语法错误导致的,还是网站的什么问题导致的?

第二步:搜索与修正
在这个阶段,我把所有假设转换成不同的形式进行搜索。拆分假设,重组语言,领域分类,转换形态…用这些方法挨着个搜索一圈,会排除掉一些东西,但如果还是不行,我会往回退一步,搜一下我做的这个事情有没有人在做,或者找一个相关视频跟着敲。这样下来,几乎没有什么问题是解决不了的。
通过这样大量信息的检索与对比之后,往往我会认识到自己思路上的一些根本性错误,有一些假设是不成立的。就比如说我可能会费力去想如何用石膏去做一个音色好听的吉他,石膏就不应该拿来做吉他。在初学时会犯很多这种假设上的错误,我通过几轮会修正自己的常识,等到稳固了之后,再在常识上进行一些创新,当我知道了大家会找最好的桃花芯木做吉他的时候,我再去思考,是否存在比桃花芯木声学共振还好的材料。

第三步:回归问题
在经历了前两个阶段之后这时候问题本身就已经变得清晰了很多,这时候只需要做的就是,将你认为最有信心的解决方案大胆的实践。如果成功那么问题就迎刃而解,如果不幸失败,那就洗把脸振作一下,重新回到第一步。
在反复经历这些阶段之后,我发现在解决新问题的时候,可以进行一个准确的假设了,因为我已经积累了足够多的编程常识。后来读到《解决问题心理学》这本书,发现里面提出的方法和我自己总结的还挺像的,有一种欣慰的感觉,知道了自己解决问题的方法是经过科学理论验证的。
<hr/>成长的唯一办法就是写更多代码

虽然能做的事情比以前多了,但有些时候总会有一种不安、甚至是自卑感。就像是拼好了几大块拼图,却没有把这些都连起来拼成一个完整的知识网络。于是就想,是不是还是应该系统学习、从底层老老实实的学起?
于是报名了一个美国的 Code Camp 线下培训,没想到最后签证没过,后来才知道应该选旅游签证,而不是商务签证。
参加培训受阻之后,我打算自己构建一个知识体系,拆分了几百个知识点、构建了一条全面系统的学习路径。但这些知识点都列出来之后,我又有了一种迷茫的感觉,面对着这么浩大的任务不知道该怎么进行下去。那段时间感觉很无助、失去了方向,每天胡乱找些视频来看。
无意中看到了 GNU 大神、Emacs 的作者 Richard Stallman 的一个演讲视频,他鼓励大家从做中去学,他说,
Programming is not a science. Programming is a craft. 编程不是一门科学,编程是一门手艺。


听到这句话之后我大受触动,我觉得这种级别的大神都这么确凿的认为,除了动手做没其他办法学编程,那我已经没啥好辩驳的了。于是我又回到了最初的项目驱动的学习方式,任由自己去折腾一些感兴趣的项目,写点自己工作用得上的插件,尝试用最近流行的库做点东西。
有一次试用 micro-django 那个库,怎么弄都运行不成功,我就急了,就去看看他的源码是怎么调用 Django 那个接口的,发现丫还有一组参数没传进去,我改了下他的源码,然后就成功了。这是我第一次看源码,实际上他的源码也就200多行,读起来挺轻松的,我能理解他的思路,也能找到问题所在,还挺有成就感的。
从那时候起,我就有了看源码的习惯。会经常去 Github Of Python 那栏搜索 micro,tiny,prove of concept 的小框架,行数不会很多,二百行是极限了,在路上的碎片化时间就可以看一看。之所以要看小框架而不是小脚本,是因为小脚本不成体系,而小框架是代码很少,但有一个非常好的思维性的设计,这个就很完美了。
在阅读别人代码的过程中,我看到了更多的可能性。书里或者教程里教的知识,我并不清楚怎么在实际项目中运用。但在源码中能看到不同人以不同形式去解决同一个问题,有的简单有的复杂、有的长有的短,这让我大开眼界。
后来有一次,麻瓜编程的网站上需要基于一个开源框架去实现一个课程中的交互效果,当时的程序员说这个事情做不了只能采用别的方案,但是当时我感觉不太对,就去看了下这个框架的源码和接口文档,发现接口很全啊,这个是能实现的,于是真的就避免了一起技术上的「事故」。
我觉得对于技术上的学习让我知道了技术的可能性并抱有警惕之心,在最关键的时刻派上用场。尤其是创业的时候,更需要在无路可走的情况下,找到解决方案。
<hr/>刚开始学编程的时候,以为看完大佬给开的书单就是技术圈的人生赢家了。但后来发现,选择了学习编程,就是选择了持续自学。隔段时间就会出现一些新技术、新框架刷新我的眼界。
一幅小漫画,与大家共勉。



最后,祝大家都能写更多代码,做更多事情。
<hr/>学 Python ≠ 100G 视频资料
学 Python ≠ 傻瓜式的在线填空题
只有多写实操项目,才能学的高效。只有建立自己的知识体系,才能学的踏实。
这是我们一直在强调的学习方法,试过的人都学成了,没听进去的人都吃亏了。于是这一次,我们把学习方法做进了课程体系里。
学习顺序按照「学习-测评-实操」进行,强制你多写代码多练习,让你学的高效。
课程按照「建立知识模型-用法必知必会-上手项目案例-系统学习脑图」的知识体系,逐个模块系统递进,既有完整实操项目从零到上线,又有系统脑图的体系化,让你学的踏实。
这是只在「Python 后端工程师培养计划」才有的学习体验。
查看课程目录、免费试听:
Python 后端工程师培养计划

There are more resources in this post

What do you need Sign in Can I download or view it without an account?Join now Scan and login on wechat

x
Translated by the Internet, your translation resource information platform, pay attention to the official account [translation information]-Official account:fanyi899
You need to log in before you can reply Sign in | Join now Scan and login on wechat

Integral rules of this edition

14

theme

14

Post

54

integral

Registered members

Rank: 2

integral
54