现在 Python 用处很多,学的人也很多,其流行程度自不必说。但是很多人学 Python 的时候都遇到过问题,特别对于非计算机专业毕业的人来说。
现在的教程非常多,但是绝大部分对于初学者都不够友好。很多教程为了求全,把很多不常用、初学者从入门到放弃都不会接触到的内容,一股脑儿全部摆出来,加重了学习的负担;要么是面向有基础的人群,很多地方语焉不详,无法参照一步步去做。当初我在学习的时候就被坑过很多次,所以想写一系列面向初学者,甚至没怎么接触过计算机的读者。希望看教程的人能够一步步的去练习。
不过学习任何技术都应该有一定的认识,虽然 Python 号称简单易学,那都是相对的。学习一门语言,不动手去敲一下,看了也白看。技术好的人,历来就是动手最多的人。
语言的学习并没有太多捷径,需要多练习。希望读者在看本教程时,不要仅仅看,还要多动手去练。
你也许没有很强的逻辑思维、你也许没有足够的数学知识、也许你写不出牛逼的算法,其实这都不重要,重要的是学会如何去使用别人已提供的库中 API(函数或方法)的用途、用法。我觉得语言就像用的各种测试工具一样,我不用去考虑底层的实现,我只要考虑如何去使用。不要给自己学习增加太多的困难,自己学语言到底要干啥?做自动化测试还是写操作系统?
也许有的人会反驳,不了解语言的原理、不了解数据结构、不了解算法、不了解...你的学语言就没有意义。如果真要会这些才算学会语言,我相信有一大半的开发人员都不合格。
有一句话我觉得很对:不求完美,先让事情开始,然后再完善它。
如果一开始追求太过,那么就应了那段经典的话:从入门到放弃。而我觉得绝大部分人可能还没摸到门槛就要放弃了。
其实我写这边教程的目的就是想告诉大家,先学到足够的知识,然后写点有意思的小玩意。让自己的学习能够见到成果,这会极大促进你学习的兴趣。
学习靠的不是毅力,靠毅力的学习都长久不了,因为这个世界有毅力的人本来就少。学习要靠正向的反馈,这些反馈来源于你学习过程中体会到的成就感。你写出一个自动化脚本,看着自动化脚本自动点击、自动输入、自动断言是有成就感的;你写了一个小爬虫,去爬了一个网站上你喜欢的图片,看着你硬盘上一个个图片的生成,这也是有成就感的。这些成就感能给你不断的正向反馈,于是你有一直学下去的动力。在教学过程中,我一直比较推荐去写写网络爬虫,这比较容易得到这种正向的反馈,同时网络爬虫的技术和自动化测试、接口测试有共通的技术点。
而你太过于纠结原理、太过于纠结完美,你会发现你的学习是寸步难行的。
Python学习过程中,就我个人的经验来说,最重要的是字符串、列表和字典的各种处理操作和函数方法等。因为以后很多时候都在处理这些内容,比如写测试脚本过程中你需要从界面上提取断言、需要自己参数化定位语句、需要从数据库中查询数据、需要批量插入数据等众多的操作,都是对这三种数据类型的处理。
也许你不一定能记住所有的函数与方法的具体写法,但是你一定要知道 Python 对某种数据类型提供了哪些函数与方法。这样当你码代码的过程中需要操作某种数据类型时,才有处理的思路,否则就傻了。对于记不住的函数或方法,你可以查阅教程资料,多用自然就记住了。
对于函数和面向对象之类的,先从概念理解。不要妄想一下就理解什么时抽象。这需要一个过程,只有当你代码写多了,你才知道为什么要写函数和写类,因为函数和面向对象就是为了减少代码而生的。但是你写了那么点代码,减了就没了,还谈什么减少。所以暂时不理解也不要过于焦虑,先记住概念。
学习很多时候,需要一个醍醐灌顶的过程。并不是所有的知识点看了、写了就领会了,每个人都有思维的短板,所以对于某些知识点有时候会出现短路的情况,也就是怎么想都理解不到,怎么问也理解不到。那么对于确实不能理解的内容,先记下来,也许你只是缺少一个契机。但如果你不去记,想给你灌顶,但是没东西给你灌啊!
由于第一次写教程,有任何意见和建议,请在评论中指出。谢谢!