原文:https://www.kennethreitz.org/essays/kenneth-reitzs-code-style

作者:Kenneth Reitz

原题:Kenneth Reitz’s Code Style™

Requests 的代码库使用 PEP-8 编码风格。

除了 PEP-8 中列出的标准外,我们还有一些指导原则:

  • 如果方便的话,行长(Line-length)可超过 79 个字符,达到 100 个字符。
  • 如果换行会导致严重的不方便,则行长可以超过 100 个字符。
  • 除非在字符串中出现单引号,否则始终使用单引号字符串(例如,'#flatearth')。

此外,PEP-8 推荐的用于连续行的编码风格毫无一点品味,绝不允许在 Requests 代码库使用:

# 与开局定界符对齐
foo = long_function_name(var_one, var_two,
                         var_three, var_four)

No。千万别。请。

文档字符串(docstrings)应遵循以下语法:

def the_earth_is_flat():
    """NASA divided up the seas into thirty-three degrees."""
    pass def fibonacci_spiral_tool():
    """With my feet upon the ground I lose myself / between the sounds
    and open wide to suck it in. / I feel it move across my skin. / I'm
    reaching up and reaching out. / I'm reaching for the random or
    whatever will bewilder me. / Whatever will bewilder me. / And
    following our will and wind we may just go where no one's been. /
    We'll ride the spiral to the end and may just go where no one's
    been.     Spiral out. Keep going...
    """
    pass

所有函数、方法和类都要求包含 docstrings 。除了对象数据模型方法(例如,__repr__),这些是此规则的例外。

Thanks for helping to make the world a better place!

资料来源(译注:即 Requests 的开发者指南):http://t.cn/E5VgNJF

(译文完)

K 神的这篇文章很短,实际上,这只是摘自 Requests 的开发者指南的一小部分。

但是,关于灵活设定行长的部分,我举双手双脚赞同。如果你所在的公司有“清白盒”的优良传统(不仅指Python),那你极有可能遇到被迫换行的麻烦,而实际上才仅仅刚刚超出了几个字符。那时候,你就会明白,这 3 条灵活规则的好处了。

另外,关于连续行的部分,PEP-8 相关内容在:http://t.cn/Rq4mxOo

PEP-8 反对的是如下写法:

# Arguments on first line forbidden when not using vertical alignment.
# 不使用垂直对齐的参数禁止在第一行上
foo = long_function_name(var_one, var_two,
    var_three, var_four)

PEP-8 推荐的写法是垂直地将换行的参数对齐起始的参数:

# 与开局定界符对齐
foo = long_function_name(var_one, var_two,
                         var_three, var_four)

K 神反对了 PEP-8 推荐的写法。在我看来,任何有品味的人,都会反对以上的两种写法。

即使一个方法的参数超级多,超出了 100 个字符,我本人也是极不情愿换行的。所以,K 神的说法深得我心。

关于代码风格,没有绝对完全一致的标准。本文也不想引起争论。不过,我认同 K 神设定的规则,因为一种与主流不同的审美倾向,值得发现它的同类。

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

本文原创并首发于微信公众号【Python猫】,后台回复“爱学习”,免费获得20+本精选电子书。

大名鼎鼎的Requests库用了什么编码风格?的更多相关文章

  1. python WEB接口自动化测试之requests库详解

    由于web接口自动化测试需要用到python的第三方库--requests库,运用requests库可以模拟发送http请求,再结合unittest测试框架,就能完成web接口自动化测试. 所以笔者今 ...

  2. python爬虫从入门到放弃(四)之 Requests库的基本使用

    什么是Requests Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库如果你看过上篇文章关于urllib库的使用,你会发现,其 ...

  3. (转)Python爬虫利器一之Requests库的用法

    官方文档 以下内容大多来自于官方文档,本文进行了一些修改和总结.要了解更多可以参考 官方文档 安装 利用 pip 安装 $ pip install requests 或者利用 easy_install ...

  4. python requests库学习笔记(上)

    尊重博客园原创精神,请勿转载! requests库官方使用手册地址:http://www.python-requests.org/en/master/:中文使用手册地址:http://cn.pytho ...

  5. python requests库学习笔记(下)

    1.请求异常处理 请求异常类型: 请求超时处理(timeout): 实现代码: import requestsfrom requests import exceptions        #引入exc ...

  6. 芝麻HTTP: Python爬虫利器之Requests库的用法

    前言 之前我们用了 urllib 库,这个作为入门的工具还是不错的,对了解一些爬虫的基本理念,掌握爬虫爬取的流程有所帮助.入门之后,我们就需要学习一些更加高级的内容和工具来方便我们的爬取.那么这一节来 ...

  7. Requests库介绍

    Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTT ...

  8. (爬虫)requests库

    一.requests库简介 urllib库和request库的作用一样,都是服务器发起请求数据,但是requests库比urllib库用起来更方便,它的接口更简单,选用哪种库看自己. 如果没有安装过这 ...

  9. requests库写接口测试框架初学习

    学习网址:    https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-dscpm/ff75b907-415d-4220-89 ...

随机推荐

  1. c# 如何找到项目中图片的相对路径

    c# 如何找到项目中图片的相对路径 string path = System.Environment.CurrentDirectory;//非Web程序if (System.Environment.C ...

  2. index.go

    package types type DocumentIndex struct {     // 文本的DocId     DocId uint64     // 文本的关键词长     TokenL ...

  3. bzoj 1426 收集邮票

    f[i]:当前已拥有i种邮票,还需要买的邮票数的期望值. g[i]:当前已拥有i种邮票,还需要的钱的期望值. 每张邮票初始都是1元钱,每买一张邮票,还没购买的邮票每张都涨价1元.  f[i]=1+(n ...

  4. java 关闭钩子函数的应用

    Runtime.getRuntime().addShutdownHook(shutdownHook); 说明:这个方法的意思就是在jvm中增加一个关闭的钩子,当jvm关闭的时候,会执行系统中已经设置的 ...

  5. go语言调度器源代码情景分析之三:内存

    本文是<go调度器源代码情景分析>系列 第一章 预备知识的第2小节. 内存是计算机系统的存储设备,其主要作用是协助CPU在执行程序时存储数据和指令. 内存由大量内存单元组成,内存单元大小为 ...

  6. Docker入门学习

    Python爬虫 最近断断续续的写了几篇Python的学习心得,由于有开发经验的同学来说上手还是比较容易,而且Python提供了强大的第三方库,做一个小的示例程序还是比较简单,这不我之前就是针对Pyt ...

  7. Python-字符版gif图

    一.背景 上一篇文章我们讲了怎么做自己的炫酷二维码,需要的移驾Python-炫酷二维码,本片文章我们讲述下怎么把一张图片处理成字符版图片,就是说使用字符替代每个像素的颜色,形成一个由字符组成的图片,并 ...

  8. 第一章.java&golang的区别之:闭包

    对于golang一直存有觊觎之心,但一直苦于没有下定决心去学习研究,最近开始接触golang.就我个人来说,学习golang的原动力是因为想要站在java语言之外来审视java和其它语言的区别,再就是 ...

  9. bind、call和apply对比和使用

    最开始关于call.apply.bind函数的使用时,总是很模糊,不知道用哪一个,this指向问题等,看了一些别人的总结后有了一定的理解,所以特地记录一下: 要搞清楚call.apply.bind我们 ...

  10. angular开发环境搭建及新建项目

    最近一个星期准备学习一下angular前端框架,因为之前在学习abp框架的时候,都要求前端要掌握angular,所以不得不回来恶补一下了,学习的过程有时间的话会记录在这里,方便以后复习. 闲言少叙,下 ...