python调试工具pysnooper用法_菜鸟世界 -调试程序的利器---PySnooper

1、 程序调试

如果是用pycharm调试程序,则可以借助IDE的debug功能进行单步跟踪,可以查看每一个变量的值,但如果是在linux平台上,就没那么容易了,通常,我会使用print输出关键变量的值,来了解程序的执行过程,这样做虽然可以,但存在缺陷,要写好多个print,而且程序调试好了以后,还得把这些print都去掉

最近了解到PySnooper,github上的热门项目,可以不使用print,却能将程序执行的每一个步骤都立体的呈现出来

2、 使用实例

安装方法如下

pip3 install pysnooper

使用示例

import pysnooper

@pysnooper.snoop(output='./log')

def pop_sort(lst):

length = len(lst)

for i in range(length-1):

for j in range(length-1-i):

if lst[j] > lst[j+1]:

lst[j], lst[j+1] = lst[j+1],lst[j]

lst = [3, 2, 9, 5, 8, 1, 4, 0]

pop_sort(lst)

print(lst)

只需要使用这个库的snoop装饰器就可以了,output可以定义一个文件,程序执行过程中的信息都会保存到这个文件中,如果不设置output,这些信息会在终端输出

下面是log日志中的部分信息

Starting var:.. lst = [3, 2, 9, 5, 8, 1, ...]

17:24:13.864020 call 4 def pop_sort(lst):

17:24:13.864311 line 5 length = len(lst)

New var:....... length = 8

17:24:13.864647 line 6 for i in range(length-1):

New var:....... i = 0

17:24:13.865066 line 7 for j in range(length-1-i):

New var:....... j = 0

17:24:13.865442 line 8 if lst[j] > lst[j+1]:

17:24:13.865654 line 9 lst[j], lst[j+1] = lst[j+1],lst[j]

Modified var:.. lst = [2, 3, 9, 5, 8, 1, ...]

17:24:13.866004 line 7 for j in range(length-1-i):

Modified var:.. j = 1

17:24:13.866365 line 8 if lst[j] > lst[j+1]:

17:24:13.866579 line 7 for j in range(length-1-i):

Modified var:.. j = 2

17:24:13.866918 line 8 if lst[j] > lst[j+1]:

17:24:13.867110 line 9 lst[j], lst[j+1] = lst[j+1],lst[j]

Modified var:.. lst = [2, 3, 5, 9, 8, 1, ...]

17:24:13.867448 line 7 for j in range(length-1-i):

Modified var:.. j = 3

17:24:13.867731 line 8 if lst[j] > lst[j+1]:

17:24:13.867904 line 9 lst[j], lst[j+1] = lst[j+1],lst[j]

Modified var:.. lst = [2, 3, 5, 8, 9, 1, ...]

17:24:13.868181 line 7 for j in range(length-1-i):

Modified var:.. j = 4

17:24:13.868515 line 8 if lst[j] > lst[j+1]:

17:24:13.868704 line 9 lst[j], lst[j+1] = lst[j+1],lst[j]

Modified var:.. lst = [2, 3, 5, 8, 1, 9, ...]

17:24:13.869003 line 7 for j in range(length-1-i):

Modified var:.. j = 5

17:24:13.869290 line 8 if lst[j] > lst[j+1]:

17:24:13.869454 line 9 lst[j], lst[j+1] = lst[j+1],lst[j]

Modified var:.. lst = [2, 3, 5, 8, 1, 4, ...]

17:24:13.869755 line 7 for j in range(length-1-i):

Modified var:.. j = 6

17:24:13.870098 line 8 if lst[j] > lst[j+1]:

17:24:13.870268 line 9 lst[j], lst[j+1] = lst[j+1],lst[j]

17:24:13.870439 line 7 for j in range(length-1-i):

17:24:13.870607 line 6 for i in range(length-1):

列表的值并没有全部展示出来,这算是个小小的遗憾,因为有时候,还是需要将变量的全部信息输出的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cocos2d是一种流行的2D游戏引擎,它支持多平台开发,包括iOS、Android、Windows、Mac OS X等。Cocos2d-python是Cocos2d-x游戏引擎的Python版本,它提供了许多强大的功能,如游戏场景、动画、精灵、物理引擎等,非常适合开发2D游戏。 下面是一个简单的Cocos2d-python的helloworld程序: 1. 安装Cocos2d-python 在安装Cocos2d-python之前,需要先安装Python和pip。然后使用pip命令安装Cocos2d-python: ``` pip install cocos2d ``` 2. 创建一个新的Cocos2d-python项目 打开命令行窗口,进入到要创建项目的目录,然后执行以下命令: ``` cocos new mygame -p com.mycompany.mygame -l python ``` 其中,mygame是项目名称,com.mycompany.mygame是包名。 3. 编写helloworld程序 在mygame项目的src目录下创建一个新的Python文件helloworld.py,然后输入以下代码: ```python import cocos class HelloWorld(cocos.layer.Layer): def __init__(self): super(HelloWorld, self).__init__() label = cocos.text.Label( 'Hello, world!', font_name='Times New Roman', font_size=32, anchor_x='center', anchor_y='center' ) label.position = 320, 240 self.add(label) if __name__ == '__main__': cocos.director.director.init() HelloWorldScene = cocos.scene.Scene(HelloWorld()) cocos.director.director.run(HelloWorldScene) ``` 这个程序创建了一个名为HelloWorld的Layer,该Layer包含一个居中显示的文本标签“Hello, world!”。最后,它创建了一个Scene,将HelloWorld添加到Scene中,并运行Scene。 4. 运行helloworld程序 在命令行窗口中进入mygame项目的根目录,然后执行以下命令: ``` python src/helloworld.py ``` 程序将会启动,并显示一个居中显示的“Hello, world!”文本标签。 这是一个简单的Cocos2d-python的helloworld程序,你可以在此基础上进一步学习Cocos2d-python的开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值