返回顶部
首页 > 资讯 > 后端开发 > Python >教你阅读Python开源项目代码
  • 657
分享到

教你阅读Python开源项目代码

教你开源代码 2023-01-31 07:01:20 657人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

作者:董伟明 链接:https://zhuanlan.zhihu.com/p/22275595 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。注:本专栏文章未经允许请勿转载。 知乎上有不少人问和关注阅读开

作者:董伟明
链接:https://zhuanlan.zhihu.com/p/22275595
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

注:本专栏文章未经允许请勿转载。

知乎上有不少人问和关注阅读开源项目代码这个问题,比如「初学 python,有哪些 Pythonic 的源码推荐阅读?」、「GitHub中适合新人阅读的Python项目有哪些?」、「如何去阅读并学习一些优秀的开源框架的源码?」等。本文将从推荐可阅读的Python项目和如何阅读者2个方面聊聊这个话题。

阅读Python开源项目代码主要有如下三个原因:

1. 在工作过程中遇到一些问题,Google和StackOverFlow等网站找不到解决办法,只能去翻源码。

2. 对某些项目或者方向非常感兴趣,希望深入。

3. 学习遇到瓶颈需要汲取开源项目的经验和用法来做提高。

没有目的的阅读开源项目就是耍流氓。浪费了时间,但是能学到的东西也很少。怎么样根据自身情况去阅读呢?

1. 和兴趣以及工作契合。举个例子,工作中没有机会用到Celery又不是想自己造个轮子,读它的源码做什么?所以要从平时能接触到的那些项目中选取。比如我,我肯定不去看Django的代码,因为日常工作基本遇不到,遇到了现翻就好了。

2. 一个方向只看一两个典型的就可以了。比如WEB框架,我只看过Bottle和flask的源码(其实之前也看过Django的,只是浅尝辄止),而且看Bottle已经是好几年前的事情了。并不是堆的多了更好,有时候反而选择太多会懵。

3. 不同技术阶段的选择代码量、复杂度不一样的项目,下面会具体推荐。

4. 清楚自己看代码的目的。就是你看代码是想了解人家怎么设计、调试BUG、还是只是想学习正确的编程用法呢?其实没有必要细抠每个代码细节,有时候当黑盒看,知道输入输出就可以了。

我个人的喜好

和工作中看别人代码差不多,基本每个人、每个项目、每个团队都有自己写代码的风格,比如变量命名风格、某些语言特性使用方式、代码规范要求、目录风格等,其实开源项目的作者也是一样。看代码,如看人(团队)。 首先介绍下我的喜好(排名分先后):

1. kennethreitz。requests和python-guide作者。他还有一个非常励志的故事,有兴趣的可以看 谁说程序员不是潜力股?

2. mitsuhiko。flask、Jinja2、werkzeug和flask-sqlalchemy作者。

3. sigmavirus24。flake8、pycodestyle(原pep8)、requests、urllib3等项目的主要贡献者和维护者。

4. ask。Celery及相关依赖的作者。

5. ajdavis。mongo-python-driver(pymongo)、tornado等项目的主要贡献者。

6. bitprophet。fabric、paramiko(Python的ssh库)作者。

前2个是公认的Python领域代码写的最好的、最有创意的工程师。

初学者推荐阅读项目

初学者可以先阅读一些代码量比较少的,最好是单文件的项目:

1. gitHub - kennethreitz/pip-pop: Tools for managing requirements files.

2. GitHub - kennethreitz/envoy: Python Subprocesses for Humans™.

3. GitHub - kennethreitz/records: SQL for Humans™

4. GitHub - mitsuhiko/pluginbase: A simple but flexible plugin system for Python.

5. GitHub - mitsuhiko/pipsi: pip script installer

6. GitHub - mitsuhiko/unp: Unpacks things.

7. GitHub - chrisallenlane/cheat

8. GitHub - jek/blinker: A fast Python in-process signal/event dispatching system.

9. GitHub - mitsuhiko/platter: A useful helper for wheel deployments.

10. GitHub - kennethreitz/tablib: Python Module for Tabular Datasets in XLS, CSV, JSON, YAML, &c.

看代码主要是了解别人写代码的方式,语法实践这些内容。看完之后,你可以针对这些项目能解决的问题自己写个项目,写完之后和上述项目去对比一下,看看哪些方面做的不好。

进阶阅读项目

进阶的时候就要阅读一些相对复杂的项目,它们能帮助你提升Python编程技巧:

1. faif/python-patterns。使用Python实现一些设计模式的例子。

2. pallets/werkzeug。flask的WSGI工具集。其中包含了实现非常好的LocalProxy、cached_property、import_string、find_modules、TypeConversionDict等。

3. bottlepy/bottle。阅读一个Web框架对web开发就会有更深刻的理解,flask太大,bottle就4k多行,当然如果你有毅力和兴趣直接看flask是最好了的。

4. msiemens/tinydb。了解用Python实现数据库

5. coleifer/peewee。了解ORM的实现。

6. pallets/click。click已经内置于在flask 0.11里,提供命令行功能,值得阅读。

7. mitsuhiko/flask-sqlalchemy。了解一个flask插件是怎么实现的。

除此之外Web开发者可以阅读一些相关的项目:

1. runscope/Httpbin。使用flask,网站是httpbin(1): HTTP Client Testing Service。

2. jahaja/psdash。使用flask和psutils的获取linux系统信息的面板应用。

3. pallets/flask-website。 flask官方网站应用。

4. pypa/warehouse。如果你使用pyramid,这个新版的PYPI网站,可以帮助你理解很多。

当然,2个学习flask重要的资源必须爆一爆:

1. GitHub - realpython/discover-flask: Full Stack Web Development with Flask。

2. The Flask Mega-Tutorial。 这个就是《Flask Web开发:基于Python的Web应用开发实战》的原始博客。

500lines

推荐一个非常厉害的项目 GitHub - aosabook/500lines: 500 Lines or Less, 它里面包含了22个由该领域的专家完成,用不到500行的代码实现一个特定功能的子项目。连Guido van Rossum都亲自来写基于asyncio爬虫了,Nick Coghlan、ajdavis也出场了。更具体的介绍可以看Python 的练手项目有哪些值得推荐? - 小小搬运工的回答。


怎么阅读开源项目源码

我基于个人兴趣和日常开发需要阅读过一些开源项目,我列一些比较通用的经验和感悟:

1. 不要畏惧。我发现大家都经常会感叹XXX强大,YYY流行,无形中你会把它放在一个不可触及到的地位,感觉它很难,而令自己不敢去挑战它。其实是人就会产出bug,假如你发现它有问题,就应该抓住机会去验证它。这个过程中,它的神秘感也就消失了,有过这么几次经验你就有信心了。其次是不要怕你提交的PR被拒绝。这是非常正常的,我有很多PR是被拒绝的,尤其是给标准库提交的Patch,绝大多数都被拒绝了。

2. 带着问题去阅读代码,这也是我认为最有效的方式。这会让你在阅读时候有个主线,比较有针对性。

3. 断点调试。在Python代码中使用pdb一般不太好使,因为代码复杂的话,这种断点需要你使用多个n跳到对应的位置,我一般都是先抛出异常,然后使用pdb的up/down/n等命令调试。当然在目标位置添加一些print日志或注释部分代码然后直接使用exit()退出也是可以的。

4. 善用文档,官网例子。阅读一个项目一开始会有点无从下手,那么就先好好这些内容,它们一般都是作者表达这个项目的第一个入口。quickstart、tutorial等内容中的最小化的例子其实就是最好的阅读入口,先去看这些引用的模块和调用的对应方法或者函数的对应实现,从下至上去阅读。

5. 理解作者的思考方式。不同的项目要有不同的思考方式来阅读,不要拧着自己的习惯去阅读,这样会很累,得尝试接受别人的观点,甚至于改变自己。

6. 阅读项目的早期版本。一些项目随着时间演进已经非常复杂了,读起来有难度,那么你可以回到项目的早期版本上,先去看相对简单地版本,然后设置几个时间点或者版本节点,渐进的来阅读。

7. 记忆并绘制项目架构。项目就是一堆代码的组合,除了学习编程技巧,还要了解项目的架构决策,这对于未来自己写大型项目非常用用。这种理解越补充,你会对它就越来越清晰。

8. 参与。如果只是看和思考而不参与,其实效果大打折扣。我建议要参与一些issue讨论、向作者提问、提PR添加新的功能、帮助改善文档等等。很多时候你理解的其实和作者是有冲突的,无论是你说服他和被他说服,对自己的成长都是很有帮助的。



推荐阅读: 《Python Web开发实战》预售了!


正文完

----------------------------------------------------------------------------------------------------------

欢迎加入QQ群121435120,或者WEB上扫码进QQ群:

--结束END--

本文标题: 教你阅读Python开源项目代码

本文链接: https://lsjlt.com/news/190793.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 教你阅读Python开源项目代码
    作者:董伟明 链接:https://zhuanlan.zhihu.com/p/22275595 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。注:本专栏文章未经允许请勿转载。 知乎上有不少人问和关注阅读开...
    99+
    2023-01-31
    教你 开源 代码
  • PYTHON开源项目及示例代码
    1 算法1.1 字符串处理1.2 数学类1.3 安全类2 跨编程语言2.1 整合 C / C++ 语言2.2 整合 JVM 平台2.3 整合 dotNet 平台2.4 整合 Objective-C 语言3 操作系统相关3.1 文件和目录操...
    99+
    2023-01-31
    示例 开源 代码
  • PostgreSQL怎么阅读源代码
    这篇文章主要介绍PostgreSQL怎么阅读源代码,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!自底向上的方法    先说自底向上的方法。简单来说,就是从一个具体的小功能点出发阅读和...
    99+
    2024-04-02
  • python阅读器代码
    最近在学习python,作业是用python写一个阅读器:要求如下:    1,有自动阅读模式    2,可以上下翻页实战:代码如下:#coding:utf-8 import time tl = []   #用于存放位置 def reade...
    99+
    2023-01-31
    阅读器 代码 python
  • python json-rpc 规范源码阅读
    目录json-rpc 源码阅读JSON-RPC规范jsonrpcclient的实现jsonrpcserver的实现小结小技巧json-rpc 源码阅读 JSON-RPC是一个无状态且...
    99+
    2024-04-02
  • Python--阅读优秀的代码
    提高代码能力的另一个捷径:阅读优秀的代码 HowdoiHowdoi is a code search tool, written in Python.使用了stackoverflow.com 作为答案库FlaskFlask is a m...
    99+
    2023-01-31
    优秀 代码 Python
  • python线程同步原语--源码阅读
    前面两篇文章,写了python线程同步原语的基本应用。下面这篇文章主要是通过阅读源码来了解这几个类的内部原理和是怎么协同一起工作来实现python多线程的。 相关文章链接:python同步原语--线程锁                  ...
    99+
    2023-01-30
    线程 源码 python
  • 教你使用IDEA搭建spring源码阅读环境的详细步骤
    目录第一步、准备gradle环境第二步、下载spring源码第一步、准备gradle环境 1、去官网下载gradle https://gradle.org/releases/ 2、...
    99+
    2024-04-02
  • 教你一招,提升你Python代码的可读性
    Python的初学者,开发者都应该知道的代码可读性提高技巧,本篇主要介绍了如下内容: PEP 8是什么以及它存在的原因 为什么你应该编写符合PEP 8标准的代码 如何编写符合PEP 8的代码   PEP 8 的存在是为了提高Py...
    99+
    2023-01-30
    可读性 教你 一招
  • Python:***测试开源项目
    sql注入工具:sqlmapDNS安全监测:DNSRecon暴力破解测试工具:patatorXSS漏洞利用工具:XSSer Web服务器压力测试工具:HULK SSL安全扫描器:SSLyze 网络Scapy: send, sniff and...
    99+
    2023-01-31
    开源 测试 项目
  • go-zero源码阅读之布隆过滤器实现代码
    目录一. 布隆过滤器简介二. 常用场景三. go-zero的布隆过滤器实现1. 简介2. 布隆过滤器结构体3. 初始化方法4. newRedisBitSet方法5. 数据添...
    99+
    2023-02-08
    go-zero布隆过滤器 go-zero源码
  • 建议收藏,五个Python迷你项目(附源码)
    在使用Python的过程中,我最喜欢的就是Python的各种第三方库,能够完成很多操作。下面就给大家介绍5个通过Python构建的项目,以此来学习Python编程。一、石头剪刀布游戏目标:创建一个命令行游戏,游戏者可以在石头、剪刀和布之间进...
    99+
    2023-05-20
    Python 项目
  • 140款Android开源优秀项目源码
    BeautifulRefreshLayout-漂亮的美食下拉刷新 GitHub - android-cjj/BeautifulRefreshLayout at BeautifulRefreshForFood Material Desig...
    99+
    2023-08-31
    android 开源
  • Python开源项目有哪些
    本篇内容介绍了“Python开源项目有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. fastapihttps://github.c...
    99+
    2023-06-16
  • Python迷你项目方法教程
    这篇文章主要介绍“Python迷你项目方法教程”,在日常操作中,相信很多人在Python迷你项目方法教程问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python迷你项目方法教程”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-15
  • Vite项目自动添加eslintprettier源码解读
    目录引言使用源码阅读总结引言 vite-pretty-lint库是一个为Vite创建的Vue或React项目初始化eslint和prettier的库。 该库的目的是为了让开发者在创...
    99+
    2022-12-27
    Vite自动添加eslint prettier Vite eslint prettier
  • 10大Python开源项目推荐
    本文是 Mybridge 挑选的 10 个 Python 开源项目,Github 平均star 2135,希望你能够喜欢~~▌Rank 1:Requests-HTML v0.9(7385 stars on Github,来自Kenneth ...
    99+
    2023-01-31
    开源 项目 Python
  • Python代码阅读--列表元素逻辑判断
    目录1、every2、some3、none1、every def every(lst, fn=lambda x: x): return all(map(fn, lst)) ...
    99+
    2024-04-02
  • 11.python开源——工程项目结构
            工程项目结构需要先弄清三个概念:包、模块、类         模块对应的是一个.py 文件,那么module_name 就是这个文件去掉.py 之后的文件名,py 文件中可以直接定义一些变量、函数、类。 导入模块 impo...
    99+
    2023-01-31
    工程项目 开源 结构
  • 国内最火的开源项目 —— Python
    截止目前开源中国收录了 44478 款开源项目,囊括了最热门的各类开源项目,而软件的评分在一定程度上代表了软件的质量和热度,而 Python 语言近年来发展势头一路攀升,因此本文整理了 Python 语言中评分超过 8.0 分的几款项目管...
    99+
    2023-01-31
    最火 开源 项目
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作