我有一个名为functions_from_module的Python模块,以及一个我想调试的函数function_inside_module。在我的应用程序中,function_inside_module用于处理某些在循环中运行的数据。但是,一个数据点给我带来了问题,所以我想在那里专门停止循环并检查模块的功能。
我一定不能搜索正确的东西;我还尝试将循环变量声明为全局变量,因为我认为这与全局变量在函数范围内不可用有关,但似乎不起作用。
以下是模块:
#filename is functions_from_module.py
def function_inside_module():
print("Before debug")
#if i > 3 #I want to do something like this
import pdb; pdb.set_trace()
print("After debug")
和主要脚本:
#filename is main_script.py
from functions_from_module import function_inside_module
#for i in range(5): #I want to do something like this
function_inside_module()
要执行,我在命令行中运行python main_script.py。
如果我要运行的行未注释(以及下面提供的右缩进),则它返回NameError:未定义名称'i'。
我使用的解决方法是重新定义function_inside_module接受参数i,但这对我来说似乎很麻烦。
答案 0 :(得分:0)
您也可以使用可选参数解决此问题:
import pdb
def function_inside_module(i=None):
print("Before debug")
if i > 3: # Debugging trace only
pdb.set_trace()
print("After debug")
--------------------
from functions_from_module import function_inside_module
for i in range(5):
function_inside_module(i)
现在,您可以忘记从函数中删除i
;它将默认为None
。
此外,import
语句位于模块的顶部,而不是埋在中间。将import
放入循环中是一个 bad 想法;您每次通过循环都会重新import
;条件检查会留下难以追踪的结果。