您好,欢迎光临本网站![请登录][注册会员]  
文件名称: Python风格语言规范(google).pdf
  所属分类: Python
  开发工具:
  文件大小: 1mb
  下载次数: 0
  上传时间: 2019-07-02
  提 供 者: qq_18******
 详细说明:Python官方风格规范文档,编码规范,二合一pdf文档, https://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/python_language_rules/ https://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/python_style_rules/ 在线版不提供下载,如果下载需求的 可以下载这个二合一的版本绝对不要用tab,也不要tab和空格混用.对于行连接的情况,你应该要么垂直对齐换行的元素(见 行长度部分的示例),或者使用4空格的悬挂式缩进这时第一行不应该有参数 Yes: ALigned with opening de limiter foo= long function name (var one, var two var three, var four) #f aligned with opening delimiter in a dictionary 十oo long dicti key: valuel value2, 4-space hanging indent, nothing on first line oo long function name var one, var two, var three, var four #f 4-space hanging indent in a dictionary long_ dictionary key long dictionary value No: Stuff on first line forbidden foo long function name(var one, var two, var three, var four #f 2-space hanging indent forbidden foo= long function name( var one, var two, var three, var four No hang ing indent in a dictionary foo=i long dictionary key: long_ dictionary value, 空行 OTi 顶级定义之间空两行,方法定义之间空一行 顶级定义之间空两行,比如函数或者类定义方法定义,类定义与第一个方法之间,都应该空一 行函数或方法中,某些地方要是你觉得合适,就空一行 空格 T 按照标准的排版规范来使用标点两边的空格 括号内不要有空格 Yes: spam(ham[1], teggs: 21, L) No: spam( ham[ 1 1,[ eggs: 2,[]) 不要在逗号,分号,冒号前面加空格,但应该在它们后面加(除了在行尾) Yes:i「 4 int x X, y=y, X No:i千X==4 rint x 参数列表,索引或切片的左括号前不应加空格. Yes: spam(1) no: spam(1) Yes: dict[ 'key]= list[index] No: dict[key= list [index] 在二元操作符两边都加上一个空格,比如赋值(=),比较(==,<,>,!=,<>,<=,>=,in, not in,is,is not),布尔and,or,not).至于算术操作符两边的空格该如何使用,需要你自己好好判断.不过两 则务必要保持一致 Yes: x== 1 当’=用于指示关键字参数或默认参数值时,不要在其两侧使用空格. Yes: def complex(real, imag=0.0): return magic(r=real, i=imag) No: def complex(real, imag =0.0): return magic(r real, i= imag 不要用空格来垂直对齐多行间的标记,因为这会成为维护的负担适用于,#,=等) Y foo 1000 #f comment long_ name =2 comment that should not be aligned dictionary long name": 2, 1000 #f comment long name =2 comment that should not be aligned dictionary long name: 2, Shebang O Tip 大部分py文件不必以#作为文件的开始.根据PEP-394,程序的man文件应该以 #!/usr/bin/ python2或者#!/us/bin/ python3开始 译者注:在计算机科学中, Shebang(也称为 Hashbang)是一个由井号和叹号构成的字符串行(), 其出现在文本文件的第一行的前两个字符在文件中存在 Shebang的情况下,类Unⅸ操作系统的 程序载入器会分析 Shebang后的内容,将这些内容作为解释器指令,并调用该指令,并将载有 Shebang的文件路径作为该解释器的参数.例如,以指令#/bin/sh开头的文件在执行时会实际调 用/bin/sh程序) #先用于帮助内核找到 thorη解释器,但是在导入模块时,将会被忽略.因此只有被直接执行的 文件中才有必要加入#! 注释 O Tip 确保对模块,函数,方法和行内注释使用正确的风格 文档字符串 Python有一种独一无二的的注释方式:使用文档字符串.文档字符串是包,模块,类或函数里 的第一个语句这些字符串可以通过对象的doc成员被自动提取,并且被 pydoc所用.(你 可以在你的模块上运行pydo试一把,看看它长什么样).我们对文档字符串的惯例是使用三 重双引号"(PEP-257).一个文档字符串应该这样组织:首先是一行以句号,问号或惊叹号 结尾的概述(或者该文档字符串单纯只有一行).接着是一个空行.接着是文档字符串剩下的 部分,它应该与文档字符串的第一行的第一个引号对齐.下面有更多文档字符串的格式化规 模块 每个文件应该包含一个许可样板.根据项目使用的许可(例如, Apache2.0,BSD,LGPL,GPL, 选择合适的样板. 函数和方法 下文所捐的函数包括函数,方法,以及生成器 个函数必须要有文档字符串,除非它满足以下条件: 1.外部不可见 2非常短小 3.简单明了 文档字符串应该包含函数做什么,以及输入和输出的详细描述.通常,不应该描述怎么做”, 除非是一些复杂的算法.文档字符串应该提供足够的信息,当别人编写代码调用该函数时, 他不需要看一行代码,只要看文档字符串就可以了.对于复杂的代码,在代码旁边加注释会 比使用文档字符串更有意义 关于函数的几个方面应该在特定的小节中进行描述记录,这几个方面如下文所述每节应 该以一个标题行开始.标题行以冒号结尾.除标题行外,节的其他内容应被缩进2个空格. Args: 列出每个参数的名字,并在名字后使用一个冒号和一个空格,分隔对该参数的描述如果 描述太长超过了单行80字符,使用2或者4个空格的悬挂缩进(与文件其他部分保持一致 描述应该包括所需的类型和含义如果一个函数接受*foo可变长度参数列表)或者xbar (任意关键字参数),应该详细列出foo和*bar Returns:威者 Yields:用于生成器) 描述返回值的类型和语义如果函数返回None,这一部分可以省略 Raises 列出与接口有关的所有异常 def fetch bigtable rows (big table, keys, other silly variable=None Fetches rows from a Bigtable Retrieves rows pertaining to the given keys from the Table instance represented by big tabLe. SiLly things may happen if other silly variable is not None Args big table: An open Bigtable Table instance keys: A sequence of strings representing the key of each table row to fetch other siLLy variabLe: Another optionaL variable, that has a much Longer name than the other args, and which does nothing Returns A dict mapping keys to the corresponding table row data fetched. Each row is represented as a tuple of strings. For exampLe t' Serak:(Rigel VII, 'Preparer Zim:('Trk,,'Invader ) (Omicron Persei 8, Emperor If a key from the keys argument is missing from the dictionary, then that row was not found in the table Raises Error: An error occurred accessing the bigtable. Table object pass 类 类应该在其定义下有一个用于描述该类的文档字符串.如果你的类有公共属性( Attributes, 那么文档中应该有一个属性( Attributes段并且应该遵守和函数参数相同的格式 class SampleClass(object) Summary of class here Longer class information Longer class information Attributes Likes spam: A boolean indicating if we Like SPAM or not eggs: An integer count of the eggs we have laid def init(self, likes spam=False) Inits Sampleclass with blah self likes spam likes spam self. eggs =0 def public method(self): Performs operation blah 块注释和行注释 最需要写注释的是代码中那些技巧性的部分.如果你在下次代码审査的时候必须解释-一下, 那么你应该现在就给它写注释.对于复杂的操作,应该在其操作开始前写上若干行注释.对 于不是一目了然的代码,应在其行尾添加注释. we use a weighted dictionary search to find out where i is in the array. We extrapolate position based on the largest num #f in the array and the array size and then do binary search to #f get the exact number. ifi&(i-1)==8 True if i is e or a power of 2. 为了提高可读性,注释应该至少离开代码2个空格. 另一方面,绝不要描述代码.假设阅读代码的人比你更懂 Python,他只是不知道你的代码要 做什么. #f BAD COMMENT: Now go through the b array and make sure whenever i occurs f the next element is i+1 类 OTi 如果一个类不继承自其它类,就显式的从 object继承嵌套类也一样 Yes: class SampleClass(object ) pass class outerclass(object) class InnerClass(object) class ChildClass(Parentclass): plicitly inherits f already No: class SampleClass class outer class lass Innerclass 继承自 object是为了使属性 (properties)正常工作,并且这样可以保护你的代码,使其不受 PEP30o0的一个特殊的潜在不兼容性影响.这样做也定乂了一些特殊的方法,这些方法实现了 对象的默认语义,包括 n t delattr getattribute setattr hash repr and str 宇符串 即使参数都是字符串,使用%操作符或者格式化方法格式化字符串.不过也不能一概而论,你 需要在+和%之间好好判定. Yes: x= a+ b x=%s, %s!'%(imperative, expletive) x=0,0!' format(imperative, expletive) X="name:‰s; score:‰’%(name,n x='name: t; score: format (name, n) N:X="‰5%5′%(a,b)#use+ in this case 0t. format(a, b)# use in this case x= imperative +, expletive x name: + name score str(n 避免在循环中用+和+=操作符来累加字符串.由于字符串是不可变的,这样做会创建不必要的临 时对象,并且导致二次方而不是线性的运行时间作为替代方案,你可以将每个子串加入列表 然后在循环结束后用join连接列表也可以将每个子串写入一个 cString. Stringy缓存 中) Yes: items =[' for last name, first name in employee list items. append('s/tr>'%(last name, first name )) tems, append(
%s, %s
employee table ='. join(items) No: employee table =' for last_ name, first name in employee list: employee table +=''% (last name, first name) employee table +='
%s, %s
在同一个文件中,保持使用字符串引号的一致性.使用单引号或者双引号”之一用以引用字符串, 并在同一文件中沿用.在字符串内可以使用另外一种引号,以避免在字符串中使用. GPyLintt已 经加入了这一检查
(系统自动生成,下载前可以参看下载内容)

下载文件列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 相关搜索: python风格规范
 输入关键字,在本站1000多万海量源码库中尽情搜索: