Python pdb.set_trace()在终端中被忽略,但在IPython中工作?
我正在调试一个程序,该程序返回父数组中最长的升序子数组。下面是名为longest.py的程序文件 问题是当我在命令行中运行Python pdb.set_trace()在终端中被忽略,但在IPython中工作?,python,pdb,Python,Pdb,我正在调试一个程序,该程序返回父数组中最长的升序子数组。下面是名为longest.py的程序文件 问题是当我在命令行中运行python longest.py时,没有显示来自pdb的提示。但是,我排除了一些提示,因为我在一些地方使用了pdb.set\u trace()语句 import pdb def longest(array): pdb.set_trace() size = len(array) if size == 1: pdb.set_trace(
python longest.py
时,没有显示来自pdb
的提示。但是,我排除了一些提示,因为我在一些地方使用了pdb.set\u 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笔记本单元并运行,确实会给出所需的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”函数?仍然没有弄明白…简单的输入错误:您缺少
\uuuuu main\uuuu
方法的“dunder”语法。将if\uuu name\uuu=='main':
更改为if\uu name\uuu==''\uu main':
,并且它应该work@davedwards谢谢它正在工作。我意识到我根本不懂\uuuuu main\uuuu
,但知道这一点很好!