场景
对于别人的开源项目,将其主函数改为普通函数的定义。然后在另一个文件夹中在主函数下调用原项目执行的函数(原主函数)。
产生BUG
就直接将原主函数改为普通函数定义,然后直接调用的话,生成的BUG很晦涩,也无法直接地指向真正的BUG所在之处。
如何找到BUG
因为我是要将原主函数定义为一个普通函数,然后调用。但是我现在是跨文件调用了,根据可执行的最小改动去定位BUG所在之处。我就直接在原文件中主函数下调用由原主函数定义来的普通函数。这时产生的报错就很直接明了,直接说明***变量未定义。
解决BUG和反思
解决
依据上一步的报错,在定义该变量位置的上一行使用global ***
将其定义为全局变量,BUG解决。
反思
为什么做这样的一个改动,就会产生这样的错误呢?
原因在于python main
函数下定义的变量作用域默认为全局。
在我的改动下,原来定义在主函数中的内容变成了在普通函数中定义的变量,而普通函数中定义的变量作用域为局部,从而引发了这样的错误。