python灰产_python入门之编码风格规范分享
最需要写注释的是代码中那些技巧性的部分. 如果你在下次 代码审查 的时候必须解释一下, 那么你应该现在就给它写注释. 对于复杂的操作, 应该在其操作开始前写上若干行注释. 对于不是一目了然的代码, 应在其行尾添加注释.
如果一个文本字符串在一行放不下, 可以使用圆括号来实现隐式行连接:
如果你关注的是 Google 官方英文版, 请移步 Google Style Guide
deffetch_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: {'Serak': ('Rigel VII', 'Preparer'), 'Zim': ('Irk', 'Invader'), 'Lrrr': ('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: IOError: An error occurred accessing the bigtable.Table object. """pass
长的导入模块语句
以下代码中 Yes 表示推荐,No 表示不推荐。
下文所指的函数,包括函数, 方法, 以及生成器.
注释里的URL
为了提高可读性, 注释应该至少离开代码2个空格.
在二元操作符两边都加上一个空格, 比如赋值(=), 比较(==, , !=, <>, <=, >=, in, not in, is, is not), 布尔(and, or, not). 至于算术操作符两边的空格该如何使用, 需要你自己好好判断. 不过两侧务必要保持一致.
Yes:defcomplex(real,imag=0.0):returnmagic(r=real,i=imag)No:defcomplex(real,imag=0.0):returnmagic(r=real,i=imag)
简单明了
classSampleClass(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_spamself.eggs=0defpublic_method(self):"""Performs operation blah."""
括号
用4个空格来缩进代码
空格
Yes:# See details at#No:# See details at# \# v2.0/csv_file_name_extension_full_specificaTIon.html
Yes:ifx==4:printx,y x,y=y,xNo:ifx==4:printx,y x,y=y,x
关于函数的几个方面应该在特定的小节中进行描述记录, 这几个方面如下文所述. 每节应该以一个标题行开始. 标题行以冒号结尾. 除标题行外, 节的其他内容应被缩进2个空格.
块注释和行注释
Yes:spam(1)no:spam(1)Yes:dict['key']=list[index]No:dict['key']=list[index]
不要使用反斜杠连接行。
顶级定义之间空两行, 方法定义之间空一行
Yes:x==1No:x<1
Yes:foo=1000# 注释long_name=2# 注释不需要对齐dictionary={"foo":1,"long_name":2,}No:foo=1000# 注释long_name=2# 注释不需要对齐dictionary={"foo":1,"long_name":2,}Shebang
确保对模块, 函数, 方法和行内注释使用正确的风格
推荐:foo_bar(self,width,height,color='black',design=None,x='foo',emphasis=None,highlight=0)if(width==0andheight==0andcolor=='red'andemphasis=='strong'):
函数和方法
注释
# We use a weighted dictionary search to find out where i is in# the array. We extrapolate position based on the largest num# in the array and the array size and then do binary search to# get the exact number.ifi&(i-1)==0:# true iff i is a power of 2
Args: 列出每个参数的名字, 并在名字后使用一个冒号和一个空格, 分隔对该参数的描述.如果描述太长超过了单行80字符,使用2或者4个空格的悬挂缩进(与文件其他部分保持一致). 描述应该包括所需的类型和含义. 如果一个函数接受*foo(可变长度参数列表)或者**bar (任意关键字参数), 应该详细列出*foo和**bar. Returns: (或者 Yields: 用于生成器) 描述返回值的类型和语义. 如果函数返回None, 这一部分可以省略. Raises: 列出与接口有关的所有异常.
每行不超过80个字符
非常短小
(译者注: 在计算机科学中, Shebang (也称为Hashbang)是一个由井号和叹号构成的字符串行(#!), 其出现在文本文件的第一行的前两个字符. 在文件中存在Shebang的情况下, 类Unix操作系统的程序载入器会分析Shebang后的内容, 将这些内容作为解释器指令, 并调用该指令, 并将载有Shebang的文件路径作为该解释器的参数. 例如, 以指令#!/bin/sh开头的文件在执行时会实际调用/bin/sh程序.)
每个文件应该包含一个许可样板. 根据项目使用的许可(例如, Apache 2.0, BSD, LGPL, GPL), 选择合适的样板.
#!先用于帮助内核找到Python解释器, 但是在导入模块时, 将会被忽略. 因此只有被直接执行的文件中才有必要加入#!.
不要用空格来垂直对齐多行间的标记, 因为这会成为维护的负担(适用于:, #, =等):
宁缺毋滥的使用括号
大部分.py文件不必以#!作为文件的开始. 根据 PEP-394 , 程序的main文件应该以 #!/usr/bin/python2或者 #!/usr/bin/python3开始.
一个函数必须要有文档字符串, 除非它满足以下条件:
类应该在其定义下有一个用于描述该类的文档字符串. 如果你的类有公共属性(Attributes), 那么文档中应该有一个属性(Attributes)段. 并且应该遵守和函数参数相同的格式.
Python会将 圆括号, 中括号和花括号中的行隐式的连接起来 , 你可以利用这个特点. 如果需要, 你可以在表达式外围增加一对额外的圆括号。
类
外部不可见
以下情况除外:
不要在逗号, 分号, 冒号前面加空格, 但应该在它们后面加(除了在行尾).
绝对不要用tab, 也不要tab和空格混用. 对于行连接的情况, 你应该要么垂直对齐换行的元素(见 :ref:`行长度` 部分的示例), 或者使用4空格的悬挂式缩进(这时第一行不应该有参数):
Yes:iffoo:bar()whilex:x=bar()ifxandy:bar()ifnotx:bar()returnfoofor(x,y)indict.items():...No:if(x):bar()ifnot(x):bar()return(foo)缩进
顶级定义之间空两行, 比如函数或者类定义. 方法定义, 类定义与第一个方法之间, 都应该空一行. 函数或方法中, 某些地方要是你觉得合适, 就空一行.
行长度
Yes:# 与起始变量对齐foo=long_funcTIon_name(var_one,var_two,var_three,var_four)# 字典中与起始值对齐foo={long_dicTIonary_key:value1+value2,...}# 4 个空格缩进,第一行不需要foo=long_funcTIon_name(var_one,var_two,var_three,var_four)# 字典中 4 个空格缩进foo={long_dictionary_key:long_dictionary_value,...}No:# 第一行有空格是禁止的foo=long_function_name(var_one,var_two,var_three,var_four)# 2 个空格是禁止的foo=long_function_name(var_one,var_two,var_three,var_four)# 字典中没有处理缩进foo={long_dictionary_key:long_dictionary_value,...}空行
不要在行尾加分号, 也不要用分号将两条命令放在同一行。
模块
括号内不要有空格.
Yes:spam(ham[1],{eggs:2},[])No:spam(ham[1],{eggs:2},[])
x=('这是一个非常长非常长非常长非常长 ''非常长非常长非常长非常长非常长非常长的字符串')
文档字符串应该包含函数做什么, 以及输入和输出的详细描述. 通常, 不应该描述"怎么做", 除非是一些复杂的算法. 文档字符串应该提供足够的信息, 当别人编写代码调用该函数时, 他不需要看一行代码, 只要看文档字符串就可以了. 对于复杂的代码, 在代码旁边加注释会比使用文档字符串更有意义.
分号
python灰产_python入门之编码风格规范分享相关推荐
- python灰产_Python学习一周有感
从业至今,搞互联网将近7年了,如今,就连和我大学一个系的媳妇儿,都已经忘记了我是学工商管理的,每次聊天谈起来,都会用她那迷茫的眼神看着我:"你不是学计算机专业的吗?" 大学毕业,进 ...
- python灰产_Python进行目录的对比
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- 【PHP开发规范】继承与扩展:PSR-2 编码风格规范
之前的一篇文章是对PSR-1的基本介绍 接下来是PSR-2 编码风格规范,它是 PSR-1 基本代码规范的继承与扩展. PSR-1 和PSR-2是PHP开发中基本的编码规范,大家其实都可以参考学习下, ...
- php 结构体_【开发规范】PHP编码开发规范下篇:PSR-2编码风格规范
之前的一篇文章是对PSR-1的基本介绍 接下来是PSR-2 编码风格规范,它是 PSR-1 基本代码规范的继承与扩展. PSR-1 和PSR-2是PHP开发中基本的编码规范,大家其实都可以参考学习下, ...
- php psr 编码规范_PHP编码风格规范
由于PHP的灵活性,很多人写起代码来也不讲求一个好的代码规范,使得本就灵活的PHP代码看起来很乱,其实PSR规范中的PSR-1和PSR-2已经定义了在PHP编码中的一些规范,只要我们好好遵守这些规范, ...
- python中文编码正则_python的unicode编码问题(以正则表达式为例)
unicode是python的内部编码. 字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成u ...
- python灰产_我用Python一键保存了半佛老师所有的骚气表情包
本文首发于公众号「Python知识圈」,如需转载,请在公众号联系作者授权. 2019年发现两个有意思而且内容比较硬核的公众号.都是同一个人运营的,我们都叫他半佛老师,现实中的职业是风控,公众号内容涉及 ...
- Python编码风格规范
Python风格规范 Python语言规范 Python语言规范 pychecker
- python代码测试_Python入门学习系列——Python代码测试
Python代码测试 对于编写的代码,可以使用unittest模块中的相关方法进行测试. 测试函数 首先定义一个简单的函数,该函数用来合并名称并返回. name_function.py: def ge ...
最新文章
- Centos7下安装Docker
- git/ TortoiseGit如何使用证书登录
- 性能测试服务器数量与线上数量不同,性能需求分析
- Qt creator5.7 OpenCV249之图片膨化(含源码下载)
- beats耳机用安卓手机影响音效么_500元以下的头戴式耳机超高性价比推荐
- 日志存储 elasticsearch vs clickhouse
- c与指针 从一个字符串中提取子串_利用双指针解LeetCode第1297题:子串的最大出现次数
- UE4像素流送PixelStreaming
- 发那科2021参数_FANUC系统常用参数汇总
- 分享一个开源的流程图绘制软件--Diagram Designer
- 基于GIS的中国历代名人人生轨迹研究
- 裁员取暖?互联网行业深陷寒冬,网易被爆裁员30%!
- 穷举字符串c语言,穷举密码算法
- apple watch3连android,无需艳羡苹果党的Apple Watch 3 这款安卓通话神器亮了
- 【论文复刻】企业数字化转型与资本市场表现——来自股票流动性的经验证据(2007-2021年数据)
- PS动作快速把图片做成手绘油漆涂鸦画效果
- solr入门以及dih简介
- python sklearn的训练集测试集根据标签的比例来切分数据集
- 一个自动填写仿站小工具下载网址的按键精灵脚本
- python编写一个名为collatz()的函数,它有一个名为number的参数,如果参数是偶数,那么collatz()就打印出number//2,如果number是奇数,collatz()就打印3*