背景介绍
在python中,我们可以很方便的打印我们想要的字符串,例如以下代码
# -*- coding:UTF-8 -*-
for i in range(1, 10):
for j in range(1, i+1):
print(f"{j} * {i} = {i*j}", end="\t")
print()
这段代码的打印效果如下:
引入模块
您可以通过以下命令安装 DebugInfo 模块
pip install DebugInfo
今天,给大家分享一个开源调试模块.py,这个模板封装并提供了非常方便的文本对齐打印功能,以上方乘法表为例,使用调试模板的代码如下:
# -*- coding:UTF-8 -*-
# 引入调试模块
from DebugInfo.DebugInfo import *
# 创建一个白板
白板: 调试模板 = 调试模板()
# 在白板上准备一个表格,实际上是初始化表格 buffer
白板.准备表格()
# 在白板中生成乘法表内容
白板.添加多行([[f'{被乘数}・{乘数} = {被乘数 * 乘数}' for 被乘数 in range(1, 乘数 + 1)] for 乘数 in range(1, 10)])
# 在白板上打印一条分隔线
白板.分隔线.提示内容('使用打印模板打印乘法表').修饰方法(绿字).展示()
# 在白板上展示生成的乘法表内容, 参数 7 表示每列前方的最小空格数量
白板.展示表格(7)
以上代码的运行效果如下
事实上,我们通过调试模板还可以很方便的对表格进行翻转操作,例如对乘法表进行左右对调,如下
# 继承上文代码,注意在展示表格前,做了一个 左右翻转表格 的操作,从而实现了对乘法表的左右翻转效果
白板.左右颠倒表格().展示表格(7)
以上代码运行效果如下
同样的操作方式,我们还可以对乘法表进行上下对调,如下
# 继承上文代码,注意在展示表格前,做了一个 上下翻转表格 的操作,从而实现了对乘法表的左右翻转效果
白板.上下颠倒表格().展示表格(7)
以上代码运行效果如下
打印彩色文本
通过使用调试模板的颜色修饰方法, 可以很方便的在白板中打印彩色的文本,如下
# -*- coding:UTF-8 -*-
# 引入调试模块
from DebugInfo.DebugInfo import *
# 创建一个白板
白板: 调试模板 = 调试模板()
白板.消息(红字('这是一行红色的字'))
白板.消息(绿字('这是一行绿色的字'))
白板.消息(黄字('这是一行黄色的字'))
以上代码的运行效果如下:
这个功能是非常有用的,例如我们可能通过颜色方便的展示一些检查结果,如下:
# -*- coding:UTF-8 -*-
# 引入调试模块
from DebugInfo.DebugInfo import *
# 创建一个白板
白板: 调试模板 = 调试模板()
温度 = 40
if 温度 > 35:
白板.消息('温度检查结果:', 红字('高温'))
白板.消息('提示: ', 黄字('多喝绿豆汤哦'))
白板.消息()
温度 = 30
if 温度 < 35:
白板.消息('温度检查结果:', 绿字('舒适'))
白板.消息('提示: ', 黄字('今天适合户外运动,多出去走走哦'))
以上代码的运行效果如下:
打印分隔线
在有些时候,我们在python脚本编写的过程中,不免需要打印各种调试消息,这些消息多了之后就需要进行分类汇总,以方便阅读。打印一些分隔线,和一些提示信息就成了一个必要的需求。调试模板也可以很方便的输入分隔线。如下
# -*- coding:UTF-8 -*-
# 引入调试模块
from DebugInfo.DebugInfo import *
# 创建一个白板
白板: 调试模板 = 调试模板()
白板.分隔线.展示() # 这是一个不加修饰的分隔线,默认长度是 50 个 - 符号
# 下面的分隔线上都有提示内容,并且有一定的装饰效果
白板.分隔线.提示内容('这条分隔线有提示内容').展示()
白板.分隔线.提示内容('这条分隔线有提示内容, 而且我比较长').总长度(60).展示()
白板.分隔线.提示内容('这条分隔线有提示内容, 而且我比较长,而且我是绿色的').总长度(60).修饰方法(绿字).展示()
白板.分隔线.提示内容('这条分隔线有提示内容, 而且我比较长,而且我是黑字红底色的').总长度(60).修饰方法(红底黑字).展示()
白板.分隔线.提示内容('这条分隔线有提示内容, 而且我文本在左边').总长度(60).修饰方法(绿字).文本对齐(对齐方式.左对齐).展示()
白板.分隔线.提示内容('这条分隔线有提示内容, 而且我文本在右边').总长度(60).修饰方法(绿字).文本对齐(对齐方式.右对齐).展示()
白板.分隔线.提示内容('这条分隔线有提示内容, 我的分隔线是 * 组成的').总长度(60).修饰方法(绿字).修饰符('*').展示()
以上代码打印了各种各样的分隔线,运行效果如下
函数传参
在编写程序中,经常会将一些固定的或者成套的步骤封装成一个一个的函数或者类,以提供代码的组织效率。但这样以来,代码在调试时的运行顺序经常不容易捕捉,这为调试带来了麻烦。调试模板可以做为函数方法的入参使用,再配合简单的缩进处理,即可方便的在打印格式上体现函数的运行层次,以下是一个演示。
# -*- coding:UTF-8 -*-
# 引入调试模块
from DebugInfo.DebugInfo import *
def 方法1(白板 : 调试模板 = 调试模板()) -> bool:
白板.执行位置(方法1)
白板.消息('我在 方法1 里执行任务')
白板.调试消息('我在 方法1 里, 但我只有在调试时才会显示哦')
return True
def 方法2(白板 : 调试模板 = 调试模板()) -> bool:
白板.执行位置(方法2)
白板.消息('我在 方法2 里执行任务')
白板.调试消息('我在 方法2 里, 但我只有在调试时才会显示哦')
# 调用 方法1 执行个子任务
方法1(白板.副本.缩进())
return True
if __name__ == '__main__':
白板: 调试模板 = 调试模板()
# 打开调试模式, 白板的调试模式会继承到副本中,除非在副本中明确关闭,例如 白板.副本.关闭调试()
白板.打开调试()
白板.分隔线.提示内容('下面调用 方法1 执行任务').修饰方法(红字).总长度(100).展示()
方法1(白板.副本.缩进())
白板.分隔线.提示内容('下面调用 方法2 执行任务').修饰方法(红字).总长度(100).展示()
# 调用 方法2 执行任务
方法2(白板.副本.缩进())
白板.分隔线.提示内容('下面调用 方法1 执行任务,调试模式关闭状态执行').修饰方法(红字).总长度(100).展示()
方法1(白板.副本.关闭调试().缩进())
白板.分隔线.提示内容('下面调用 方法2 执行任务,调试模式关闭状态执行').修饰方法(红字).总长度(100).展示()
方法2(白板.副本.关闭调试().缩进())
以上代码简单构造了两个方法,方法2 内部会嵌套调用 方法1,在主程序中分别以打开调试和关闭调试两种模式下调用方法1,和方法2;以上代码运行效果如下
我们可以看到,
- 在调试模式下,调用方法1时,打印显示 方法1 开始执行,然后打印了方法1内部的消息。
- 在调试模式下,调用方法2时,先打印了显示了 方法2 开始执行,然后打印了方法2内部的消息。然后缩进打印了 方法1 开始执行,然后打印了方法1内部的消息。
可以看到,方法1的打印消息和方法2的打印消息,层次是比较分明的。缩进层次表示了程序的运行顺序。
总结
以上就是 调试模板.py 提供的主要功能了。可以见得,其功能是丰富的,且使用方便的,再也不用为打印场景下的各种对不齐的现象而烦恼了,让我们更聚焦于功能逻辑的开发吧。