Python入门系列【附】进阶教程
如题,本篇将讲解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进阶自检清单” 。大部分内容确实只是把清单列出来而已,可能会涉及一些我自己的理解和补充。当然,出错的部分都是我的问题,还请大家多多指教!
Python入门系列【附】进阶教程的更多相关文章
- Python基础教程系列目录,最全的Python入门系列教程!
Python是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. 在现在的工作及开发当中,Python的使用越来越广泛,为了方便大家的学习,Linux大学 特推出了 <Python基 ...
- Python入门系列教程(一)基础
基础知识 1.变量及类型 2.换行\n 3.输入 password = raw_input("请输入密码:") print '您刚刚输入的密码是:', password 4.格式化 ...
- Python入门系列教程(六)面向对象
1.self 所谓的self,可以理解为自己,可以把它当做C++中类里面的this指针一样理解,就是对象自身的意思,在用某个对象调用该方法时,就将该对象作为第一个参数传递给self. 2.class ...
- Python入门系列教程(五)函数
全局变量 修改全局变量 a=100 def test(): global a a=200 print a 多个返回值 缺省参数 def test3(a,b=1): print a,b test3(a) ...
- Python入门系列教程(四)字典
既能存储多个数据,还能在访问元素的很方便就能够定位到需要的那个元素 增 Dic = {'name':'沐风', 'city':'北京'} Dic['sex']='男' print Dic 删 del ...
- Python入门系列教程(三)列表和元组
增 1.insert A = ['] A.insert(0,0) print A 2.append A = ['] A.append(7) print A 3.extend A = ['] B = [ ...
- Python入门系列教程(二)字符串
字符串 1.字符串输出 name = 'xiaoming' print("姓名:%s"%name) 2.字符串输入 userName = raw_input('请输入用户名:') ...
- 程序员用于机器学习编程的Python 数据处理库 pandas 进阶教程
数据访问 在入门教程中,我们已经使用过访问数据的方法.这里我们再集中看一下. 注:这里的数据访问方法既适用于Series,也适用于DataFrame. **基础方法:[]和. 这是两种最直观的方法,任 ...
- Python入门系列(一)安装环境
python是什么 python是一门很受欢迎的语言,除了不能生孩子以外,其它都可以做. 它擅长的领域是脚本工具和科学数据这一块,比如大数据,数据分析什么的. python安装 为了演示和验证教程可用 ...
随机推荐
- bzoj2049 Cave 洞穴勘测 lct
这里比上次多了几个操作. 1. make_root(u) 换根节点, 先access(u), 再splay(u),将u移动到splay树的最顶上, 现在这棵splay对于root来说 只有左子树上有东 ...
- lightoj 1037 - Agent 47(状压dp)
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1037 #include <iostream> #include & ...
- 天梯杯 L2-005. 集合相似度
L2-005. 集合相似度 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定两个整数集合,它们的相似度定义为:Nc/Nt*1 ...
- 程序员过关斩将--更加优雅的Token认证方式JWT
菜菜,上次你讲的cookie和session认证方式,我这次面试果然遇到了 结果怎么样? 结果面试官问我还有没有更好的方式? 看来你又挂了 别说了,伤心呀.到底还有没有更好的方式呢? 你猜? 基于To ...
- 【Offer】[53-2] 【0~n-1中缺失的数字】
题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内.在范围0~n-1内的n个数字中有且只有一个数字 ...
- 学习 Nginx+IIS 分布式测试
首先,从Nginx官网(http://nginx.org/en/download.html)下载了一个Window版本,解压后如图: 修改conf文件夹里面的配置文件nginx.conf,默认的808 ...
- Intellij IDEA使用restclient测试
Intellij IDEA内置了restclient来帮忙我们测试我们的后台代码,让我们可以脱离第三方工具测试,也更不需要我们编写前端代码,直接让我们能想网站发送get,post,put,delet ...
- Scratch Blocks本地环境搭建
关于Scratch Blocks环境的搭建,大家在实现的过程中还是有很多的问题,目前谷歌和MIT的工程师也在进一步完善.可以通过以下方式,简单快捷的导出Scratch Blocks对应的index.h ...
- C# 反射基础用法
1.引用命名空间 using System.Reflection; 2.object[] parameters = { 参数 }; 调用方法的参数数组 3.Type t = Type.GetType( ...
- 【linux】【sonarqube】安装sonarqube7.9
前言 SonarQube 是一款用于代码质量管理的开源工具,它主要用于管理源代码的质量. 通过插件形式,可以支持众多计算机语言,比如 java, C#, go,C/C++, PL/SQL, Cobol ...