文章目录 1. 案例介绍 2. 准备工作 3. 细节设计 4. 代码汇总 5. 运行结果 后记 1. 案例介绍 今天我们使用 Python 提供的相关库函数,实
文章目录
- 1. 案例介绍
- 2. 准备工作
- 3. 细节设计
- 4. 代码汇总
- 5. 运行结果
- 后记
1. 案例介绍
今天我们使用 Python 提供的相关库函数,实现在执行函数时,打印每一步的变量值。
2. 准备工作
- pysnooper。
- 装饰器的知识。
3. 细节设计
代码的关键是使用了 @pysnooper.snoop() 装饰器方法。
那么什么是装饰器呢?装饰器是一个特殊的函数,本质上是一个函数,在另一个函数开始执行前先执行,就像是一扇门一样。来看下面的例子:
def decor(func):print("This is decorator.")
def warp():
func()
return warp
def function():
print("This is func.")
function()
# 输出
This is decorator.
This is func.
只需要将 @+装饰器函数名 添加在其它函数开头,便能够很方便地将装饰器函数的功能添加在另一个函数上,是不是很方便呢?
4. 代码汇总
# encoding: utf-8# !/usr/bin/python
"""
@Filename:使用pysnooper
@Author: Jiaming
@Create date:2019.5.29
@Mail:jiaming.Z@foxmail.com
@Blog:
@Description:
"""
import math
import pysnooper
.snoop()
def number_to_bits(number):
"""
:param number:
:return:
"""
if number:
print(math.sin(math.pi / 3))
bits = []
while number:
number, remainder = divmod(number, 2)
bits.insert(0, remainder)
return bits
else:
return [0]
print("---\n结果:", number_to_bits(6))
5. 运行结果
我们来看看输出内容:
会输出执行每一行代码的时间、该代码位置、代码内容、是否是新的变量、如果是旧的变量,那么值改为了多少…
Source path:... D:\Programmer\PYTHON\基础学习\使用pysnooper.pyStarting var:.. number = 6
14:44:16.572923 call 16 def number_to_bits(number):
14:44:16.573923 line 21 if number:
14:44:16.573923 line 22 print(math.sin(math.pi / 3))
0.8660254037844386
14:44:16.574922 line 23 bits = []
New var:....... bits = []
14:44:16.574922 line 24 while number:
14:44:16.574922 line 25 number, remainder = divmod(number, 2)
Modified var:.. number = 3
New var:....... remainder = 0
14:44:16.574922 line 26 bits.insert(0, remainder)
Modified var:.. bits = [0]
14:44:16.574922 line 24 while number:
14:44:16.574922 line 25 number, remainder = divmod(number, 2)
Modified var:.. number = 1
Modified var:.. remainder = 1
14:44:16.574922 line 26 bits.insert(0, remainder)
Modified var:.. bits = [1, 0]
14:44:16.575923 line 24 while number:
14:44:16.575923 line 25 number, remainder = divmod(number, 2)
Modified var:.. number = 0
14:44:16.575923 line 26 bits.insert(0, remainder)
Modified var:.. bits = [1, 1, 0]
14:44:16.575923 line 24 while number:
14:44:16.575923 line 27 return bits
14:44:16.575923 return 27 return bits
Return value:.. [1, 1, 0]
---
结果: [1, 1, 0]
请按任意键继续. . .
后记
当然,关于装饰器以及 pysnooper 的用法这里都只是抛砖引玉,有机会我们可以好好总结下装饰器的用法,这个东西用处还是蛮大的。ok,以上就是我们今天的内容。