如何系统的自学python 知乎-应该怎样系统的学习Python标准库?
先放个牛逼的学习资料:Python 3 Module of the Week,中文名《每周一个 Python 3 模块》。作者几乎实践了一遍全部标准库,并为每一个 API 补充了一段代码示例,可以和官方文档相互补充来看。
学习 python 文档的原则就是:熟悉常用库的大部分常用API。
我最近花了一个多月时间读了几遍这些库的文档,从此之后感觉写 python 代码轻松多了。
string:包含各种简单的字符串处理方法,对于简单的字符串处理操作使用这里面的方法即可,不要动不动就写个正则表达式。
re:字符处理终极模块。好好掌握正则表达式语法,掌握里面的几个匹配方法,掌握 Match Object 的用法,捕获组的用法等。需要指出的是如果能用 string 模块处理的就尽量不用正则表达式,杀鸡不用牛刀。
datetime,calender:我对于涉及时间处理的情况倒不多,一般就是获取一下当前时间,根据时间的字符串构造 datetime 对象,格式化时间输出等,因此掌握其常用的几个对象和方法即可。
math,random,statistics:非专门的数学程序偶尔也会涉及一点数学运算,这几个模块提供了最基本的数学运算方法。了解里面提供了哪些开箱即用的方法不至于让我们在遇到基本的数学运算时束手无策或者重新发明轮子。当然专门的数学计算我会使用 numpy,pandas 等。然而掌握标准库的基本模块同样很重要,你不会想为了一个简单的需求而不得不去安装一个 numpy。
itertools,operator:itertools 是一个十分重要的模块。直到我某天遇到它才发现我以前一直在傻逼地重复造轮子,比如求排列组合等。虽然 tertools 里面的方法自己写也用不了几行代码,但别人既然已经写好了干嘛不用?operator 只求掌握两个方法 itemgetter 和 attrgetter,这给排序带来极大便利。虽然也可以用 lambda 表达式代替,但是用这两个方法更加 pythonic ,且对于大量元素排序其性能会略有提升。而该模块的其他方法大部分似乎都是我们常用内置操作符的函数版本,了解即可。
pathlib,glob,fnmatch:简单的目录处理使用 glob 和 fnmatch 即可,这两个模块十分简单,只有几个 API 即完成大部分目录处理和文件名匹配功能。而 pathlib 则提供了一整套面向对象常用和不常用的目录处理 API,异常强大方便。值得一提的是如果你不是因某些原因非得使用 py2 的话,我强烈建议直接使用 py 的最新发布版本(目前是 py3.5),py3 的很多高级特性和新引入的标准库障相比 py2 会省事很多,例如 pathlib 就是 py3.4 才引入。目录处理 py2 参阅 os.path
sqlite3:为了防止杀鸡用牛刀的情况准备。有时候我们会遇到一点简单的数据库需求,你肯定不想为了仅仅存那么一点数据而花费大量时间去配置一个 mysql 或者其他大型的数据库服务。sqlite 内置于 python,开箱即用,异常方便。另外你不用过于担心性能问题,我相信一般的需求都没有到考虑 sqlite 性能的地步。我曾用 sqlite3 处理过 40GB 的数据,和 mysql 不相上下。
threading,multiprocessing,concurrent.futures:有时候涉及到大量 io 处理或者运算处理,程序显得有点慢,用这几个模块改造一下程序,使其多线程或者多进程运行会显著提高程序运行效率。
json:处理 json 编码解码也是常用需求,这个模块非常简单,10分钟可以看完其 API。
utllib.request,urllib.response,urllib.parser,urllib.error,http.cookies,http.cookiesjar:写小爬虫脚本使用到的库。虽然面对 requests 库这几个库都该 deprecated,但是了解这几个库的使用方法有助于我们更好地理解 requests 库是如何工作的以及让我们体会到为什么人们感激 requests 库的作者。另外 html 解析方面 beautifulsoup 推荐一看。我的需求就是写点简单小爬虫脚本从互联网爬一些数据。专业的爬虫可求助常用的爬虫框架。
此外我是做数据科学的,列举几个科学计算的标准库:numpy,scipy,pandas,matplotlib,各大机器学习库(但我不搞机器学习,所以也不是很清楚。)
这么多模块不可能完全记住其全部 API,我们要做到的就是当遇到某个需求时马上回想起某个模块的某个函数可以解决该问题,然后迅速订阅到文档查阅其使用方法。另外多看别人写的优秀代码有助于提高个人写代码的姿势,不鼓励重复造轮子但鼓励重复拆轮子,研究轮子然后造全新的轮子。
手机码字,暂时说这么多。本人也是一个被 python 的优雅吸引的小菜鸟,望能和 pythoner 们不断交流学习。
补充一点:看到一些回答不鼓励系统地学习文档,但从我个人学习编程体会来看,并不十分同意。学习过但不记得了和从没学习过绝对是两回事。我初学 python 的时候也是践行着边用边查的原则,遇到一个需求就百度或者 google,这往往都能搜索出解决方案。但是这些搜到的资料有一些缺点,比如已经过时,或者限于作者本人的知识,给出的有时候不一定是最佳解决方案,或者你用他的代码解决了问题,但是由于不明白其原理,遇到坑不知道如何解决,最终还得回去读官方文档。官方文档好处是权威,而且文档中会包含着这个作者对这个模块设计的理念,这些对从网上搜索的资料来说是没有的。此外,除非是那种超大型的库,一般通读一遍其官方文档一般也就几个小时,读一遍是绝对值得的。我现在根据经验总结出来的我认为最好的做法是:在使用任何一个模块之前,先通读一遍其官方文档,了解其为我们提供了哪些 API,之后在实际编程的过程中遇到了相关需求,就针对这个需求再去查阅文档,如果文档说的不够详细,再 google 网上的一些代码示例。
如何系统的自学python 知乎-应该怎样系统的学习Python标准库?相关推荐
- 怎么学python知乎_你是怎么学习Python的 ?
大家不要看到这个文章的题目,就认为这是一篇广告软文.然而并不是,因为我看到了很多同行都被大数据.人工智能的热潮吸引了,开始纷纷学习python.这是好事,但看到了好多人都走了不少弯路,浪费了时间.于是 ...
- 零基础学python知乎-零基础人员可以学习python吗?|Python培训基础教程
python是目前市场上比较流行的一种语言,个人认为也是比较有发展前途的编程语言,如果你既然决定想要好好去学习python,那么一定要做好准备,下定决心,制定合适的计算. 相信对于很多基础的小白来说, ...
- python自学多久可以找到工作-25岁从零开始学习python还能找到工作吗?
相信近期大家经常可以看到培训机构推出python相关的课程,随着人工智能技术逐渐进入大众的生活,这种编程语言以简单.应用广泛的优势,成为了进入人工智能领域的条件之一.对于精通python开发的人,在职 ...
- python和linux运维学哪个--学习Python在Linux运维上的应用应该看哪些书 什么样的学习路线...
python 元类生成类的方法是什么类型的 首先请一下习惯,python中的类名习惯用大写字母开 我是这样理解的,不一定对,通过type() ,还是实例方法instancemethod 只不过B这个类 ...
- python运维看什么书_学习Python在Linux运维上的应用应该看哪些书 什么样的学习路线...
匿名用户 1级 2017-08-02 回答 Python岗位有哪些呢?主要的岗位有这些: Python全栈开发工程师(10k-20K) Python运维开发工程师(15k-20K) Python高级开 ...
- python是用什么语言开发的-python是什么语言?哪些人适合学习Python?
众所周知,Python 是一门更注重可读性和效率的语言,这两个天然优势让其在IT界里备受青睐,吸引了不少目光.相信找到这篇文章的你,肯定也是为Python的魅力所倾倒. 那么Python是什么语言呢? ...
- python编程第四版_清华编程教授强力推荐《Python编程》,指导你如何学习python
Python编程真的那么容易吗?仅仅是看理论就可以学以致用吗? 今天我给你介绍的这本书,也许会让你开始改变这种想法,因为这本书上的练习和案例以及指导本身就足够学好Python了. 清华编程教授强力推荐 ...
- python是什么语言-python是什么语言?哪些人适合学习Python?
众所周知,Python 是一门更注重可读性和效率的语言,这两个天然优势让其在IT界里备受青睐,吸引了不少目光.相信找到这篇文章的你,肯定也是为Python的魅力所倾倒. 那么Python是什么语言呢? ...
- 小猿圈python视频_小猿圈分享学习Python的最佳方式
原标题:小猿圈分享学习Python的最佳方式 python现在是世界上功能最多的编程语言之一,可以是用Python编辑应用程序,游戏.算法程序.还可以编程一个机器人,学习Python可以担任软件工程师 ...
最新文章
- HTML编码问题导致的乱码
- SQL数据库学习-简单查询
- 通过虚方法实现方法重写-多态
- oracle 建表id自增长_oracle 左连接、右连接、全外连接、内连接、以及 (+) 号用法...
- 讲讲 MySQL 中的 WAL 策略和 CheckPoint 技术
- 启动rrt什么意思_面试官:你来说一下springboot启动时的一个自动装配过程吧!...
- 语音识别的原理_语音识别原理_语音识别原理框图 - 云+社区 - 腾讯云
- JAVA转为wasm/JavaScript,可以考虑CheerpJ
- [HFSS]Surface Mesh Generation Failed
- c语言short a=32768,C语言中short整型资料的范围“-32768——32767”中的“-32768”是如何确定的?...
- 关于IT程序员一些面试技巧
- hadoop错误:java.io.IOException: There appears to be a gap in the edit log. We expected txid 1
- 什么是Bom,常用的bom属性又有哪些?
- JAVA 去除字符串首尾特定字符
- java 等待线程/线程池执行完毕
- Jenkins怎么发邮件,高级测试手把手教你...
- 【转】MaNGOS Windows Setup for WoW 2.3.3 (Chinese Edition)
- AI之边缘计算、雾计算云计算技术分析
- 今年的双11,真的是太太太太太太香了!万元好礼回馈......
- 进度条(ProgressBar)的功能与用法