python有哪些编程规范_Python 编程规范

为了solid个人的python编程习惯,简单整理了部分提醒自己今后要注意的地方。

1.不要使用反斜杠联结行,python会将(, {, [中的内容隐式的连接起来

x = ('This will build a very long long '

'long long long long long long string')

2.Url 如果很长就放到一行

3.尽量不使用括号

return foo

而不是

return (foo)

4.括号内不要有空格.

Yes: spam(ham[1], {eggs: 2}, [])

5.在二元操作符两边都加上一个空格, 比如赋值(=), 比较(==, <, >, !=, <>, <=, >=, in, not in, is, is not), 布尔(and, or, not).

6.当’=’用于指示关键字参数或默认参数值时, 不要在其两侧使用空格.

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)

7.注释使用 主要描述做什么 然后 args, returns, raises

"""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

8.类注释

类应该在其定义下有一个用于描述该类的文档字符串. 如果你的类有公共属性(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."""

9.块注释和行注释

最需要写注释的是代码中那些技巧性的部分. 如果你在下次代码审查 的时候必须解释一下, 那么你应该现在就给它写注释. 对于复杂的操作, 应该在其操作开始前写上若干行注释. 对于不是一目了然的代码, 应在其行尾添加注释.

# 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.

if i & (i-1) == 0:# True if i is 0 or a power of 2.

另一方面, 绝不要描述代码. 假设阅读代码的人比你更懂Python, 他只是不知道你的代码要做什么.

10.类继承

如果一个类不继承自其它类, 就显式的从object继承. 嵌套类也一样.

class SampleClass(object):

pass

class OuterClass(object):

class InnerClass(object):

pass

11.字符串

x = a + b

x = '%s, %s!' % (imperative, expletive)

x = '{}, {}!'.format(imperative, expletive)

x = 'name: %s; score: %d' % (name, n)

x = 'name: {}; score: {}'.format(name, n)

12.单引号,双引号一致性

13.TODO注释

为临时代码使用TODO注释, 它是一种短期解决方案. 不算完美, 但够好了.

TODO注释应该在所有开头处包含”TODO”字符串, 紧跟着是用括号括起来的你的名字, email地址或其它标识符. 然后是一个可选的冒号. 接着必须有一行注释, 解释要做什么.

# TODO(kl@gmail.com): Use a "*" here for string repetition.

# TODO(Zeke) Change this to use relations.

14.每个导入应该独占一行

import os

import sys

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值