想象一下,在我们得到真正想要的东西的时候,我们必须要攀上某些悬崖
引子
众所周知,Python 是一门重要的编程语言,广泛的应用于数据科学、web开发、软件工程、游戏开发、自动化等领域。那么学习 Python 最好的方法是什么呢?其实这是很多初学者的困惑点,都是 Python 好学也好用,但是到底该怎么学呢,下面我就分享一下我个人的一点心得!
在学习 Python 的时候,我发现最令人烦恼的事情就是所有学习资源都是差不多的,也就是通用性。比如我想学习如何使用 Python 创建网站,但似乎每一个学习资源都希望大家花上两个漫长、枯燥的几个月来学习 Python 语法,然后我才能考虑去做我真正感兴趣、想要做的事情。这个漫长的过程,可能也是一个劝退的过程,对于一些自学能力差,或者意志力不够坚定的人来说,半途而废太容易了!
几个栗子,比如下面的代码
from django.http import HttpResponse def index(request): return HttpResponse("Hello, world. You're at the polls index.")
上面的代码来自 Django 教程,Django 是一个非常流行的 Python 网站开发框架。有经验的程序猿经常会向给初学者抛出上述代码片段,然后说“很简单!“。其实不然。
即使是几行看似简单的代码也会让初学者产生困惑,例如,为什么有些行是缩进的?什么是 django.http?为什么有些东西在括号里?当初学者不太了解 Python 的时候,理解所有内容是如何组合在一起就变得非常困难了。
那么要理解上面的代码,就需要了解 Python 语言 和 Django 的构建方式,上面的代码片段创建了一个视图,是使用 MVC 架构网站的关键构建块之一。所以如果不知道如何编写代码来创建视图,那么就不可能创建动态网站。
所以要明白上面的架构,就需要首先懂得 Python 语法以及 Django 的相关知识,这其实都会占用我们大量的时间、精力,那么在我们进行真正的开发之前,可能要几个月之后了。
这些往往会导致我们的学习兴趣消退,甚至把整个计划都取消了。
那么该如何避免上面的学习梯度呢,这里我总结了一些个人认为比较好的学习方法,仅供参考!
有效的方法是把学习基础知识和构建有趣的东西结合起来,我们可以花尽可能少的时间学习基础知识,然后立即投入到创造我们感兴趣的东西当中去,这样,可以极大的提高完成率哦!
Step 1 明确为什么学习 Python
在开始学习 Python 之前,我们有必要问问自己为什么要学习 Python。因为学习 Python 这将是一个漫长的,会伴随着痛苦的旅程。如果没有足够的动力,那么很可能撑不过去。例如,我在大学的编程课上经常睡觉,虽然有必须要记住语法,知识点等,但是没有十足的动力来支撑我。但是有的时候,当我需要用 Python 建立一个网站来自动评比论文时,我却可以熬夜完成它,这就是动力的作用!
所以说,找出你的动机将帮助你找到一个最终目标,一条让你不感到无聊的道路。在准备学习 Python 的时候,我们不必弄清楚所有的项目,只需要了解我们感兴趣的一般领域即可。
选择你感兴趣的领域,例如:
数据科学/机器学习
移动应用程序
网站
游戏
数据处理与分析
硬件/传感器/机器人
自动化工作的脚本
首先就是找出一两个你感兴趣的领域,并愿意坚持下去。然后再把学习中心慢慢的向他们倾斜,最终来完成自己想要的项目。
Step 2 学习基本语法
没有任何办法,这一步不能跳过。在深入研究所选的领域之前,我们必须学习 Python 语法的基础知识。没错我知道,很多人都希望在这方面花费少一些时间,最好能够速成,这就仁者见仁智者见智了。当然我的观点也是,尽可能少的把时间花费在基础知识上,很多东西只需要在用到的时候再去学习即可。
以下是一些比较推荐的学习基础知识的好资源:
· 学习Python的艰难之路--一本教授 Python 概念、从基础到更深入程序的图书
· Python guide--Python 的官方教程
这里我还是要再强调下,我们应该在基本语法上花尽可能少的时间,毕竟我们是要使用 Python,而不是研究 Python。越快着手做项目,就学得越快。当什么时候遇到困难时,我们再来解决相应的问题。理想的情况下,在这个阶段差不多应该只花几个星期,肯定不超过一个月。
注意:要学习 Python3 哦,Python2 就不要再花费力气去学习了~
Step 3 学习已有的项目
一旦我们学会了基本语法,那么就可以开始自己做项目了。项目是一种很好的学习方式,因为它可以让我们应用学习到的知识,这也是一个检验的过程。要知道,学到的知识一定要用起来,否则很快就忘记了。做项目将提升我们的编码能力,也能开阔眼界,拓展思维等。
那么为什么我要推荐学习已有的项目呢,因为对于新手来说,从无到有的项目将带来很多问题,不容易集中思维,项目写着写着就跑偏了。所以,最好我们还是根据已有的一些好的项目来做,一直到我们自己觉得自己已经完全可以从头完成一个项目为止。许多学习资源都提供了很多不错的项目,这些项目可以让你在你关心的领域构建有趣的东西的同时还能防止你陷入困境。
让我们来看看每个领域的一些好资源:
数据科学/机器学习
· Dataquest--交互式地教授 Python 和数据科学。比如分析了一系列有趣的数据集,从中情局文件到 NBA 球员数据等等。最终可以构建复杂的算法,包括神经网络和决策树等
· Python for Data Analysis--一个非常好的介绍 Python 数据分析的教程
·Scikit-learn documentation-Scikit 是一个非常重要的 Python 第三方库,进行数据分析和机器学习,基本离不开它
移动应用
· Kivy-guide--Kivy 是一个可以让你用 Python 制作移动应用程序的工具,这是它的官方文档
网站
· Flask tutorial--Flask 是一个非常流行的 Python web 框架,这是它的入门教程
· Bottle tutorial--Bottle 是 Python 的另一个 web 框架,可以从这里开始学习
· How To Tango With Django--Django是一个复杂的 Python Web 框架可以开发出功能强大的网站
游戏
· Codecademy--带你完成几个简单的游戏
· Pygame教程--Pygame 是一个流行的用于制作游戏的Python 库,这是它的教程列表
· 用Pygame制作游戏--一本教你如何用 Python 制作游戏的书
http://www.amazon.com/Making-Games-Python-Pygame-Sweigart/dp/1469901730
· 用Python发明你自己的电脑游戏--同样是这本指导你如何用 Python 制作游戏的书籍
硬件/传感器/机器人
· Using Python with Arduino --学习如何使用 Python 控制连接到 Arduino 的传感器
http://www.toptechboy.com/using-python-with-arduino-lessons/
· Learning Python with Raspberry Pi--使用 Python 和树莓派构建硬件项目
https://www.raspberrypi.org/blog/learning-python-with-raspberry-pi/
· Learning Robotics using Python--学习如何使用 Python 构建机器人
· Raspberry Pi Cookbook -学习如何使用树莓派和 python 建立机器人
https://www.amazon.com/Raspberry-Pi-Cookbook-Simon-Monk/dp/1449365221
自动化工作的脚本
· Automate the boring stuff with Python -学习如何用 Python 自动化日常任务,所谓的 Python 自动化办公
一旦你在自己的领域完成了一些已有项目的搭建,那么你就应该能够着手自己的项目了。但是,在此之前,花点时间学习如何解决问题也是非常重要的。
Step 4 完成自己的项目
完成了一些已有项目的搭建之后,就应该自己动手做项目,继续更好地学习 Python。此时我们仍然会参考相关资源和学习各种概念,但这个时候我们会显得更加自由了。此时调试代码和解决问题就成为了一个重点,下面的这些网站,都是程序员每日必逛的网站哦:
· StackOverflow--一个社区问答网站,大型程序员交友集中地
· 谷歌--能不能上的去,凭本事喽
· Python文档--查找 Python 参考资料的好地方,还有什么地方比官网更加权威呢
· 百度--不多说,有时还是蛮管用的
一旦你对调试问题有了比较好的方法和经验之后,就可以开始自己的项目了。做一些自己感兴趣的事情,我的地盘我做主。
下面是一些寻找有趣项目的技巧:
· 扩展以前处理的项目,并添加更多功能
· 加入一些 Python 社区,找一些从事有趣项目的人
· 找一些开源项目,看看能否贡献一些代码
· 找别人做过的项目,看看能不能扩展或调整,Github 要利用起来
· 浏览别人的博客文章,找一些灵感
· 日常工作生活中的一些小工具,可以提升效率的
记得从小处着手,从非常简单的事情开始思考,这样就可以获得更多的信心。最好先开始一个小项目,然后完成一个大项目,而这个项目可以一直做下去,一直有优化的空间。
当然此时也可以结对编程,相互鼓励,鞭策!
如果真的想不出什么好的项目点子,可以参考下面的每个领域的一些点子:
数据科学/机器学习项目点子
· 显示各种数据的地图
· 一种预测你居住地方的天气的算法
· 预测股市的工具
· 自动总结新闻文章的算法
移动应用项目点子
· 一个记录每天行走步数的应用程序
· 每天发送天气预报的程序
· 基于位置的实时聊天工具
网站项目点子
· 一个帮助你计划每周饮食的网站
· 游戏视频网站
· 在线记事本
Python游戏项目点子
· 基于地理位置,以占领对方位置为取胜之道的游戏项目
· 通过解决问题来通关的游戏
硬件/传感器/机器人项目点子
· 传感器项目,监测家里的温度
· 和闹钟结合,设计一个更加智能的闹钟
· 可以探测障碍物的机器人
工作自动化项目点子
· 自动化数据输入的脚本
· 自动从网上搜集数据的工具
说了这么多,最关键是挑点东西做。如果我们过于执着于挑选一个完美的项目,那么就有可能永远都做不到,从而半途而废。
Step 5 继续更困难的项目
不断增加项目的难度和范围,如果这个时候,你已经想不出该如何优化自己的项目了,那么就是时候进行一个更加有挑战的项目了。
这个时候就更加有意思了,我们可以再进一步做一些事情:
· 试着教一个新手如何运行你的项目
· 项目够完美吗,它能处理更多的数据,还是能处理更多的流量?
· 你能让你的程序运行得更快吗?
· 你能让你的工具对更多的人有用吗?
· 你将如何将你所做的商业化?
Python 是一门非常有趣且值得学习的语言,我认为任何人只要找到正确的动机和方法,都可以熟练的掌握 Python。
原文参考:https://www.dataquest.io/blog/learn-python-the-right-way/
说了这么多,希望对你有所帮助哦!
还不给个“在看”嘛!!!!