我正在尝试调试一个返回父数组中最长的升序子数组的程序。以下是名为 longest.py 的程序文件。
问题是当我在命令行中运行python longest.py
时,没有显示来自pdb
的提示。但是,我除了一些提示外,因为我在一些地方使用了pdb.set_trace()
语句。
import pdb
def longest(array):
pdb.set_trace()
size = len(array)
if size == 1:
pdb.set_trace()
return 1
else:
pdb.set_trace()
print('Currently looking at subarray of length: ')
print(size)
if array[-1] > array[-2]:
pdb.set_trace()
return longest(array[0:size-1]) + 1 # increasing the number by 1
else:
return longest(array[0:size-1])
def main():
a = [7, 2, 3, 1, 5, 8, 9, 6]
longest(a)
if __name__ == 'main':
main()
另一方面,以下程序放入Jupyter Notebook单元并运行它,确实提供了所需的pdb提示。
a = [7, 2, 3, 1, 5, 8, 9, 6]
import pdb
# recursive version
def longest(array):
size = len(array)
pdb.set_trace()
if size == 1:
pdb.set_trace()
return 1
else:
pdb.set_trace()
print('Currently looking at subarray of length: ')
print(size)
if array[-1] > array[-2]:
return longest(array[0:size-1]) + 1 # increasing the number by 1
else:
return longest(array[0:size-1])
longest(a)
我的问题是: 1)为什么在第一个场景中似乎忽略了pdb.set_trace(),并且 2)为什么pdb.set_trace()在第二种情况下有效?
非常感谢你的帮助!
20分钟后更新
我将第二个程序粘贴到python文件 longest2.py 中并从命令行运行它。 pdb在那里工作得很好。
所以我猜第一个文件的问题不是pdb而是我的" main"功能?仍然没有想到它......