不被注意的Python代码规范(2)---语言规范

Author Avatar
Trace 11月 16, 2017
  • 在其它设备中阅读本文章

本篇接上一篇:不被注意的Python代码规范(1)—风格规范,主要介绍Pythn代码的语言规范。

主要的参考是Google Python Style Guide

Pylint

Pylint是一个代码检查工具,用来发现代码bug和不符合规范的地方,默认代码风格是PEP 8。但是目前流行的IDE,如eclipse,pycharm都包含了代码检查功能。

在代码中通过包的全名来import每个模块,比如:

# 用全名引用.
import sound.effects.echo

# 只用模块名引用 (推荐).
from sound.effects import echo

异常处理

异常处理是被允许的,但是使用的时候要注意。
其实之前都没注意过这方面的细节,就会用一个try…except…,上具体代码学习学习:

try:
    # 正常操作
    pass
except Exception, expression: 
    # 可以有多种异常,满足一个就执行异常代码,代码:except(Exception1[, Exception2[, ...]])
    print expression    # 获得expression作为错误的具体表述
else:
    # 如果没有异常发生
finally:
    # 不管有没有异常发生,都会执行

还有几个点需要注意的:

  • 异常的识别比较敏感,会把各种基本异常都识别到,所以尽量指定异常名。
  • 尽量减少try后面的代码操作,代码越多,异常可能也越多,而让我们catch不到我们关心的异常。

Lambda函数

Lambda函数定义的是匿名函数,经常和map()、filter()函数连用。主要好处是可以减少定义那些只用到一次的函数。但是不需要用来代替某些内置函数,比如乘法之类的,又来一波实践代码:

>>> l = ['foo', 'bar', 'far']
>>> map(lambda x: x.upper(), l)  # 取list中所有词的大写
['FOO', 'BAR', 'FAR']
>>> filter(lambda x: 'f' in x, l)  # 筛选list中含有'f'的词
['foo', 'far']
>>> reduce(lambda x, y: x*y, xrange(1,5)) # xrange与range的区别是xrange得到的是一个生成器,reduce函数与map函数差不多,是一个反复调用的功能。
24

装饰器

本来对装饰器一无所知,之前还和同事讨论过装饰器的一些用法之类的,大致了解了。感觉它的主要目的是提取函数中与本身功能无关的一些代码,进而达到代码重用的目的。我主要是参考http://python.jobbole.com/82344/这篇博客,循序渐进地描述了把一个计时功能逐渐转成装饰器的过程,从实现最基本功能,到函数加入参数,再到装饰器加入参数,比较容易理解,很推荐。我把代码重写一遍,加深一下理解。

# coding:utf8
import time
def time_count(func):
    s_time = time.time()
    func()
    e_time = time.time()
    time_c = e_time - s_time
    print 'elapsed time: {} s.'.format(time_c)

def func():
    print 'strat'
    time.sleep(0.5)
    print 'end'

time_count(func)  

# 以上代码是实现func函数的运行时间计算,但是所有的func函数都要以time_count(func)来运行了。

# 以下是用装饰器重写

import time
def time_count(func):
    def wrapper():
        s_time = time.time()
        func()
        e_time = time.time()
        time_c = e_time - s_time
        print 'elapsed time: {} s.'.format(time_c)
    return wrapper

@time_count
def func():
    print 'strat'
    time.sleep(0.5)
    print 'end'

func()

至此,对于Python的代码规范大致总结了一些我个人之前忽略了的方面,也希望之后在coding的过程中进一步应用,写出漂亮的代码。


本文标题: 不被注意的Python代码规范(2)---语言规范
原始链接: https://oyeblog.com/2017/python_code_rules_2/
发布时间: 2017年11月16日 - 19时30分
最后更新: 2023年10月22日 - 15时06分
版权声明: 本站文章均采用CC BY-NC-SA 4.0协议进行许可。转载请注明出处!