python编码总结

2017-01-22  本文已影响44人  腩啵兔子

目前我们项目代码注释少、代码风格差异大,会导致交接时间长、交接后故障多的问题。针对这种情况,我们应该统一代码风格,增加代码注释,减少交接维护的成本。在此,总结了一些有用的Python规范,欢迎大家补充。

编码规范

严格的pep8规范太繁琐,推荐使用谷歌规范,此规范提供了一套简洁有效的注释和编码风格,上手十分容易。而且pycharm会针对注释做一些静态检查,可以进一步降低代码问题。以下是根据经验添加的一些补充。

函数注释

我们的项目几乎没有函数注释,一些关键性的函数添加合适的注释是十分有必要的,不需要太多的解释,只需要正确的表明入参类型和含义、返回参数类型和含义以及可能出现的异常。这些信息对刚上手的人来说十分有用,不仅可以快速读懂,而且也更方便地定位问题和代码检视。举例如下:

def del_message(consumer_id, message_id):
    """删除消息

    Args:
        consumer_id (int): 接收人id
        message_id (int): 消息id

    Returns:
        code (string): 操作返回码
    """
    code, _ = mysql_model.delmsg(consumer_id, message_id)
    mysql_model.querymsg.invalidate_consumer(consumer_id)
    redis_model.del_unread_message(consumer_id, [message_id])
    return code

pycharm的审阅功能会根据注释仲标注的类型检查代码,如果不匹配,会有颜色标记,可以更早的发现问题。

import

除了不要将多个模块或者符号放在一行导入的规则以外,也需要对导入模块的顺序做一个规范:按照python自带模块、第三方模块、项目模块的顺序导入,在管理模块的时候会更有条理。举例如下:

import time
import ujson
import functools

from retrying import retry

from msgcenter.models import (
    mysql_model,
    push_model,
    redis_instance,
)
from msgcenter.core import constants
from msgcenter.pb import (
    stub,
    urlsitter_pb2,
)

字符串拼接

不要使用%和+拼接字符串,推荐使用format拼接。

'{}{}'.format(a, b)

原因是format比%拼接针对动态类型有更好的容错处理,而+运算符拼接字符串会有不必要的内存拷贝,性能不高。

性能改进

使用正确的模块和函数提升性能。

循环

第三方c扩展库相对原生库性能更好:

内存

其他

上一篇下一篇

猜你喜欢

热点阅读