如题,本篇将讲解Python提升之路;Python作为语法简单易学的语言,入门容易精通却很难,这是共识,那么为什么会有这样的共识?精通Python的难度在哪里?
Python拥有简单、形象、直观的语法,有着众多的第三方库,封装了大多数的操作,因此入门Python非常容易,并且大多数学习Python都从爬虫开始,趣味性也比较丰富;这样友好的语法下,初学者入门非常简单。
创一个小群,供大家学习交
然而正是这样的技术路线,导致了我们忽略了Python本身,我们都注重了Python应用,都在学习的重心是在第三方库的接口熟悉,就忽略了对其中的框架思想、底层语法运用的学习。
也就是说我们仅追随其形,而未深入其心,于是乎由其他编程语言转Python很容易,而由Python转其他语言就相对困难;程序=算法+数据结构,但在Python应用中很少关注算法和数据结构,大多数人学习Python本质都只是在学习使用一个工具,而不是在学习编程思想;
并且学习Python要么从爬虫开始、要么从数据分析开始、或者从人工智能开始,这些都只是Python的应用,他们并不代表Python这门编程语言,以为自己学得很深入,其实只不过熟悉了一个工具而已;正如人工智能领域,太多的调包侠,我们在其他领域的深入,何尝不是在成为一个资深的调包侠。
要Python进阶,我们就要明白什么是Python的核心?一般来说Python的核心也是其他编程语言的核心:算法、数据结构;除此之外还有模式设计、框架思想、基础语法、内部机制、底层原理及实现;
Python的进阶很简单:深入三方库源码、学习框架思想、注重基础语法在常用库中的运用,同时深入程序模式设计与应用,学习Python的常用机制与实现原理;跳出对第三方库的API学习,更深入原理学习;简而言之,不仅要知道某个库的某个方法的使用效果,更要知道效果背后的实现逻辑。
这样的好处是:当你遇到兼容性问题的时候,你可以修改第三方库的某些代码,进而实现兼容;可以在学习众多框架之后,写出与之同样出众的框架;可以快速深入Python的其他应用领域。Python入门到实践教程请加群
在学习Python的过程中我们要有初级、中级、高级的印象;这样的判断并没有具体的标准,你可以这样来衡量:219539519欢迎加入免费获取教程
初级:熟悉Python的基础语法规则,能够按照经验使用三方库的API,平常练练并没在实际项目中运用。
中级:熟练应用Python的基础语法,能够解决意外情况,可以看懂源码中的方法实现思路,并在实际项目中应用。
高级:针对实际项目中的问题,可以追溯原因,并且能够解决出现的问题;对一些常用方法原理、协议模型、编程思想、框架熟悉。
更高级:自己定义吧。
上面的定义只是给Python学习路途上的Python指一个方面,其并不严谨,如果说衡量技术有唯一标准那就是结果,不管什么项目有什么困难,最后都能解决,那就是高手。
如何进阶?
下一个问题是,如何进阶呢?
我们首先应该会达成的共识是:作为一门技术,编程应该在实践中学习,因此,进阶一定包含大量的实践,而不仅仅是理论的阅读与理解。
于是,我们的问题转换为,我们要学习哪些理论,做哪些实践?
参考我们在上面提出的四条思路,主要涉及的理论应该包括:数据存储与传输、常用框架、数据结构与算法、编码规范、文档、测试、设计模式与版本管理等。
在这些理论知识中,我们实践起来最方便,教材也最丰富的,应该是各种常用框架。事实上,我们要构建一个应用,解决一个问题,一般都会借助一个成熟的框架。
那么也就是说,可能最为常见的学习路径,就是学习框架,通过框架搭建自己的应用,并在这个过程中系统学习,不断引入其它各方面的理论和实践。
举例来说,我们可以着手学习一个 web 框架,写一个简单应用,在这个过程中不断引入其它方面的内容:
- 首先是 编码规范 ,最为基础,内容也很少。就 Python 而言,可以先看一遍 PEP8 的建议,然后在 IDE 中引入一些检查插件,就可以按照规范进行编码了。
- 第二个可以很快学会的是 版本管理工具 ,只需要花几个小时了解一下基本命令,就可以在之后的编程实践中用起来了。
- 文档与测试,相对来说也比较容易上手,自然也可以紧接着引入自己的实践中。
- 数据存储与传输、数据结构与算法、设计模式 等内容,相对地需要一定的系统学习,市面上也有丰富的材料,只要有一个整体的计划,在学习的过程中不断地与自己的实践相参照,自然可以融会贯通。
总的来说,这是一个有意识地学习的过程,不断反省自己的缺漏,不断引入新的实践内容。对于新人来说,开始上手都是容易的,可能比较困难的是对这些目标的持续反思,按这些规范严格要求自己。
3. 除此之外呢?
除此之外呢?
任何一门编程语言,除了语言本身,都包含大量社区实践形成的规范,或者说,经验总结。比如 PEP8 就是 Python 社区关于编码规范所形成的一套约定。这些经验,也可以认为是当前被比较多人所认同的最佳实践,我们当然有必要了解这些最佳实践。
事实上,是否知道并采用这些最佳实践,有时也可以作为我们判断一位程序员是否经验丰富的标准。
我们获取这类最佳实践的方法,一个是通过团队之间的相互学习,一个是通过书籍。
比如 《Effective Python:编写高质量 Python 代码的59个有效方法》 就是介绍最佳实践的书籍。里面的内容,有些我们已经习以为常了,也有些可能不太了解。
说来惭愧,当我阅读这本书的时候,有时心里是很慌的。我们写代码,经常过一段时间,就感觉之前的代码写得很烂,现在写得会好一些,于是感觉自己有点成就了,看了别人的实践,却发现自己的代码依然丑陋。
所谓“独学而无友,则孤陋而寡闻”,就是这个意思吧!
这篇文章已经比较长了,这个系列接下来的文章,会大体介绍《Effective Python》所推荐的最佳实践,叫做 “Python进阶自检清单” 。大部分内容确实只是把清单列出来而已,可能会涉及一些我自己的理解和补充。当然,出错的部分都是我的问题,还请大家多多指教!