如何学习 Python,面对那么多的标准库,应该如何?
回复内容:
Python标准库虽多,但不是个个用起来都很爽。只给一条建议的话就是:如果Python标准库中明明已经提供一类操作集合的模块了,而网络上还有一些人推荐第三方库,别想了,用后者吧。比如(Requests: HTTP for Humans)之于urllib,比如(Arrow: better dates and times for Python)之于datetime。这两个库的好用之处就不作介绍了,想借此机会对Python标准库吐槽几句:
在Python2下,最初有个urllib标准库用来处理从网络上抓取一些数据的工作,但是这个库太不好用了,例如一次HTTP协议的请求中想自定义请求头,还得引入另一个模块httplib,太不人性化。于是有人对它做了些扩展,打包后叫urllib2,还给加到标准库里去了,但这个urllib2还是有很多地方不是很好用,比如没有连接池这种东西,做爬虫那帮人还得自己鼓捣,于是又有人对它做了扩展,打包后叫urllib3,谢天谢地,这次没加入到标准库,不过要是Python社区对于这种新纳入标准库的模块命名不是这么蛋疼的话,我倒认为urllib3现有的功能需要加入到标准库中,只有一个urllib多好。幸好,虽然前面说得那个好用的(Requests: HTTP for Humans)也是基于urllib3所做的扩展,但终结了数字尾巴的命名噩梦,要是想想urllib4,就觉得一阵反胃。
还是命名上的吐糟,这次举个Python3的例子,在Python3里,urllib和urllib2都被合并到了一起,就叫urllib,根据原先两个模块所提供的方法工作场景分类,被放入urllib.request、urllib.parse、urllib.error这三个子模块中,不过之前提到的urllib3中像是连接池这类有用的,还是没被支持。看上去比Python2中要美好,让我们看看urllib.request模块的名字空间吧:
<span class="n">urllib</span><span class="o">.</span><span class="n">request</span><span class="o">.</span><span class="n">AbstractBasicAuthHandler</span> <span class="n">urllib</span><span class="o">.</span><span class="n">request</span><span class="o">.</span><span class="n">AbstractDigestAuthHandler</span> <span class="n">urllib</span><span class="o">.</span><span class="n">request</span><span class="o">.</span><span class="n">AbstractHTTPHandler</span> <span class="n">urllib</span><span class="o">.</span><span class="n">request</span><span class="o">.</span><span class="n">BaseHandler</span> <span class="n">urllib</span><span class="o">.</span><span class="n">request</span><span class="o">.</span><span class="n">addclosehook</span> <span class="n">urllib</span><span class="o">.</span><span class="n">request</span><span class="o">.</span><span class="n">addinfourl</span> <span class="n">urllib</span><span class="o">.</span><span class="n">request</span><span class="o">.</span><span class="n">build_opener</span> <span class="n">urllib</span><span class="o">.</span><span class="n">request</span><span class="o">.</span><span class="n">getproxies</span> <span class="n">urllib</span><span class="o">.</span><span class="n">request</span><span class="o">.</span><span class="n">getproxies_environment</span> <span class="n">urllib</span><span class="o">.</span><span class="n">request</span><span class="o">.</span><span class="n">getproxies_macosx_sysconf</span> <span class="n">urllib</span><span class="o">.</span><span class="n">request</span><span class="o">.</span><span class="n">parse_http_list</span> <span class="n">urllib</span><span class="o">.</span><span class="n">request</span><span class="o">.</span><span class="n">parse_keqv_list</span> <span class="n">urllib</span><span class="o">.</span><span class="n">request</span><span class="o">.</span><span class="n">pathname2url</span> <span class="n">urllib</span><span class="o">.</span><span class="n">request</span><span class="o">.</span><span class="n">posixpath</span> <span class="n">urllib</span><span class="o">.</span><span class="n">request</span><span class="o">.</span><span class="n">to_bytes</span> <span class="n">urllib</span><span class="o">.</span><span class="n">request</span><span class="o">.</span><span class="n">unquote</span> <span class="n">urllib</span><span class="o">.</span><span class="n">request</span><span class="o">.</span><span class="n">unquote_to_bytes</span> <span class="n">urllib</span><span class="o">.</span><span class="n">request</span><span class="o">.</span><span class="n">unwrap</span> <span class="n">urllib</span><span class="o">.</span><span class="n">request</span><span class="o">.</span><span class="n">url2pathname</span> <span class="n">urllib</span><span class="o">.</span><span class="n">request</span><span class="o">.</span><span class="n">urlcleanup</span> <span class="n">urllib</span><span class="o">.</span><span class="n">request</span><span class="o">.</span><span class="n">urljoin</span> <span class="n">urllib</span><span class="o">.</span><span class="n">request</span><span class="o">.</span><span class="n">urlopen</span>
换了电脑来好好回答一下。刚刚开始学完Python的基础语法之后也有一些迷茫,不知道该继续学些什么,于是在网上看到了Python Challenge这个闯关游戏,据说是2007年为了推广Python弄的这样一个东西。
当时第一次接触玩了两关就玩不下去了(那时候编码能力和学习能力真的是弱的可以)
这段时间又重新找出来做做,发现真的感觉完全不一样了,它每一关都会用到一两个甚至更多个Python的标准库,他会给你一些提示,然后你可以根据提示去Python的官网看看具体库的用法,然后再开始做。这样的话就可以达到一个了解和学习Python标准库的目的。至少下次遇到问题时可以知道用Python的什么库来解决。
在我的博客听雨轩 | You are my convition, but there must be something wrong in my life 里我写了前19关的解题报告,大家可以参考一下。
在这里简单罗列一下每一关用到的库和Python的知识:
第00关:数字计算。
第01关:string
第02关:re 或者用filter函数也可以
第03关:re
第04关:urllib
第05关:pickle
第06关:zipfile
第07关:PIL
第08关:bz2
第09关:turtle 或PIL
第10关:找规律
第11关:PIL
第12关:文件处理
第13关:xmlrpclib
第14关:PIL
第15关:datetime
第16关:PIL
第17关:urllib urllib2 cookielib xmlrpclib
第18关:difflib binascii
第19关:wave
暂时只做到这里。。。后面的有机会继续更新~
=====原答案=====
在网上有一个python challenge的闯关游戏,一关基本就需要用一到两个标准库,然后你可以在实践中知道这些库的用法。我最近在做这个。。安利一下我的博客,里面有自己写的题解。
听雨轩 | You are my convition, but there must be something wrong in my life 用到哪个学哪个,多翻官方文档。 这时候祭出我的小项目: https://pypi.python.org/pypi/rdir ,合作者 @赖渊
可通过 树形结构的html、命令行、文件形式来查看python module或 module内object的递归结构和文档(pydoc)。目前仅支持 *nix的python 2.x,windows未测试,若有Windows用户用过可以反映一下情况,抱歉不会windows。
目前进一步在规划迭代中,欢迎试用拍砖以及提功能建议。report issues: Issues · Lhfcws/rdir · GitHub
Example: rdir/test.py at master · Lhfcws/rdir · GitHub
下载方式: sudo pip install rdir
================ 广告时间结束,开始答题。 =======
1. 如何学习python?
我假设你有其他相关语言基础。找一本如《python基础教程》这样的入门书看一遍,下载个ipython(windows实在不行那个IDLE勉强也可以吧)解释器上跟着教程操作熟悉一下,然后写个小项目比如多人聊天室。你要能把chatroom努力熬出来了,你已经会用python做简单的并行、网络通信和各种基本操作了。建议使用linux / MacOSX系统,因为命令行下你可以写一点小工具进一步去熟悉,其中需要什么库你就去搜索看看有没有。
学会使用 pip 做第三方模块下载管理。
2. 学习标准库
不用专门学习,你需要什么功能就去搜搜人家怎么用,python很多库的文档都不怎么friendly。也许可能有些实现你不知道有库,自己写的很麻烦,但其实无所谓。你能搞出来没问题那就先用着,等到你知道有更好的实现或者发现问题解决很麻烦感觉要造轮子的时候,请搜索。
* 以上回答不适合较有经验的程序员。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

本文解释了如何使用美丽的汤库来解析html。 它详细介绍了常见方法,例如find(),find_all(),select()和get_text(),以用于数据提取,处理不同的HTML结构和错误以及替代方案(SEL)

Python的statistics模块提供强大的数据统计分析功能,帮助我们快速理解数据整体特征,例如生物统计学和商业分析等领域。无需逐个查看数据点,只需查看均值或方差等统计量,即可发现原始数据中可能被忽略的趋势和特征,并更轻松、有效地比较大型数据集。 本教程将介绍如何计算平均值和衡量数据集的离散程度。除非另有说明,本模块中的所有函数都支持使用mean()函数计算平均值,而非简单的求和平均。 也可使用浮点数。 import random import statistics from fracti

Python 对象的序列化和反序列化是任何非平凡程序的关键方面。如果您将某些内容保存到 Python 文件中,如果您读取配置文件,或者如果您响应 HTTP 请求,您都会进行对象序列化和反序列化。 从某种意义上说,序列化和反序列化是世界上最无聊的事情。谁会在乎所有这些格式和协议?您想持久化或流式传输一些 Python 对象,并在以后完整地取回它们。 这是一种在概念层面上看待世界的好方法。但是,在实际层面上,您选择的序列化方案、格式或协议可能会决定程序运行的速度、安全性、维护状态的自由度以及与其他系

本文比较了Tensorflow和Pytorch的深度学习。 它详细介绍了所涉及的步骤:数据准备,模型构建,培训,评估和部署。 框架之间的关键差异,特别是关于计算刻度的

本文讨论了诸如Numpy,Pandas,Matplotlib,Scikit-Learn,Tensorflow,Tensorflow,Django,Blask和请求等流行的Python库,并详细介绍了它们在科学计算,数据分析,可视化,机器学习,网络开发和H中的用途

本文指导Python开发人员构建命令行界面(CLIS)。 它使用Typer,Click和ArgParse等库详细介绍,强调输入/输出处理,并促进用户友好的设计模式,以提高CLI可用性。

该教程建立在先前对美丽汤的介绍基础上,重点是简单的树导航之外的DOM操纵。 我们将探索有效的搜索方法和技术,以修改HTML结构。 一种常见的DOM搜索方法是EX

文章讨论了虚拟环境在Python中的作用,重点是管理项目依赖性并避免冲突。它详细介绍了他们在改善项目管理和减少依赖问题方面的创建,激活和利益。
