Day 14 : 程序码日志与品质

今天来探讨怎麽留下程序码纪录和提升自己的程序码品质。(终於快写到一半了XDDD)/images/emoticon/emoticon69.gif

程序码日志

程序设计难免会有错误,为了要方便除错和查询,良好的程序设计应留下程序码日志轨迹,以利日後查询纪录执行。我们会引用 logging 套件,而 logging 共分 5 个等级。

Level Illustration
DEBUG 纪录开发时候的日志内容,上线後可以关闭显示
INFO 纪录正常情况下的内容
WARNING 纪录虽然发生不会影响程序执行,但有警示意味
ERROR 纪录程序执行时发生的错误内容
CRITICAL 纪录最严重的错误内容

1. 基本介绍

可以在开发的时候调整为 DEBUG;上线後就调整为 ERROR。

import logging
logging.basicConfig(level=logging.DEBUG)
logging.debug('纪录开发时候的日志内容')
logging.info('纪录正常情况下的内容')
logging.warning('纪录虽然发生不会影响程序执行,但有警示意味')
logging.error('纪录程序执行时发生的错误内容')
logging.critical('纪录最严重的错误内容')

import logging
logging.basicConfig(level=logging.ERROR)
logging.debug('纪录开发时候的日志内容')
logging.info('纪录正常情况下的内容')
logging.warning('纪录虽然发生不会影响程序执行,但有警示意味')
logging.error('纪录程序执行时发生的错误内容')
logging.critical('纪录最严重的错误内容')

2.FORMAT

通常会希望纪录什麽时间点发生、等级、档案名称、第几行错

import logging
logging.basicConfig(level=logging.ERROR, 
                    format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
logging.debug('纪录开发时候的日志内容')
logging.info('纪录正常情况下的内容')
logging.warning('纪录虽然发生不会影响程序执行,但有警示意味')
logging.error('纪录程序执行时发生的错误内容')
logging.critical('纪录最严重的错误内容')

3.输出到档案

import logging
logging.basicConfig(level=logging.ERROR, 
                    format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s',
                    filename='test.log')
logging.debug('纪录开发时候的日志内容')
logging.info('纪录正常情况下的内容')
logging.warning('纪录虽然发生不会影响程序执行,但有警示意味')
logging.error('纪录程序执行时发生的错误内容')
logging.critical('纪录最严重的错误内容')

程序码品质

为提高大家的程序码品质,我们特别提到这个章节,希望大家会学到:

  • 提高你的程序码易读性
  • 容易维护
  • 减少技术债
  • 程序码会朝向 pythonic ,比较优雅

1. PEP

Python Enhancement Proposals,规范与定义 Python 的技术规格,让开发社群有共同遵循的标准。由於规范很多,大家可以直接点下面连结参考,本篇着重於套件展示。

https://www.python.org/dev/peps/

2. PEP-8 优点

    1. 一致性: 程序码具备一样的格式,让阅读的人可以轻松许多。
    1. 程序品质: 阅读结构化的程序码,可以更快找到 bug 的地方。

3. 好用套件

autopep8

autopep8 是一个开源的命令行工具,它能够将 Python 代码自动格式化为 PEP8 风格。autopep8 使用 pycodestyle 工具来确定代码中哪一部分需要被格式化,修复这部分问题的 pycodestyle 工具版。 autopep8 制造也是一个 Python 语言写写的工具,因此,我们可以直接使用 pip 进行:

pip install autopep8

原本的程序码

import os, sys  
 
def main():  
    print [item for item in os.listdir('.') if item.endswith('.py')];  
    print (sys.version)  
 
if __name__ == '__main__':  
    main()

更改後

autopep8 test01.py

如果没有 --in-place,则不会覆盖档案

flake8

Flake8是由Python官方发布的辅助检测Python代码是否规范的工具,相对於当前热比较高的Pylint,Flake8检查规则灵活,支持集成额外插件,扩展性强。

pip install autopep8

实际使用看看

pylint

为您的程序码品质打上分数!!
pylint是一个Python代码风格的检查工具, 它依据的标准是 PEP8。

pip install pylint

实际使用看看

接着照着 pylint 给的建议,就可以改高分一点(改程序朴实无华的乐趣)


<<:  使用 OpenTelemetry api 自订义内容

>>:  Day 12 均衡思考赚钱与不被花钱

Day08 - Python虚拟环境

在前面几天的练习中,我们都直接在本机安装套件,但实际工作上做系统维运时,因各系统开发年份、技术需求等...

30天程序语言研究

今天是30天程序语言研究的第二十五天,由於最近写unix语言的东西用到很多,所以做了很多笔记,就想说...

IT 铁人赛 k8s 入门30天 -- day18 Task Configure Default Memory Requests and Limits for a Namespace

前言 今天要完成的项目 k8s Task: Memory-default-namesapce 这个 ...

[Day25] Esp32s + IFTTT + LINE

1.前言 前两篇使用到日常生活中使用率最高的通讯软件LINE Notify功能,不知道各位小夥伴是否...

用React刻自己的投资Dashboard Day17 - Dashboard 2.0版路由功能

tags: 2021铁人赛 React 如Day15的wireframe,为了要加上更多的功能,因此...