在调试代码时,我们会打断点让程序停下来,观察变量。除了打断点进行调试,我们还可以使用 Python 自带的交互模式,在交互模式除了可以观察变量,还可以执行函数。
例子:
import code
# 定义一些变量
var1 = 'Hello'
var2 = 42
def my_function():
return 'This is my function.'
# 进入交互模式,并继承所有变量
code.interact(local=locals())
在交互模式,可以继承代码中的变量和函数,通过交互模式调用函数、修改变量。
交互模式使用了 locals() 来传递变量,关于 locals() 和 globals() 的区别,它们两个都用于获取变量,但作用域不同。
-
locals()
函数: -
locals()
函数返回一个包含当前局部作用域中所有变量名和对应值的字典。局部作用域可以是函数内部,也可以是模块级别的任何代码块。 -
在函数内部调用
locals()
函数会获取该函数内的所有局部变量。 -
在全局作用域调用
locals()
函数会获取全局变量。 -
globals()
函数: -
globals()
函数返回一个包含当前全局作用域中所有变量名和对应值的字典。 -
在任何地方调用
globals()
函数都会获取全局作用域中的所有变量。
对于需要维护数据的场景,也可以使用交互模式。比如数据存盘前需要进行调整,如果在程序中写数据处理逻辑,程序正常执行时并不会用到。使用过 django 的对这种场景应该非常熟悉,开发初期经常需要手工调整数据,比如删测试数据。
最后需要补充一下,code 是标准库,不需要额外 pip 安装。
全文完。
如果转发本文,文末务必注明:“转自微信公众号:生有可恋”。
原文始发于微信公众号(生有可恋):在Python代码中使用命令行交互模式
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论