这是一个奇怪的请求,但我正在寻找有缺陷的Python代码。我想了解更多关于错误和调试器的知识,并且需要一些有缺陷的代码来进行操作。不幸的是,我写的所有代码都很短小并且没有错误(到目前为止)。
最好不要是GUI相关的(因为我刚开始学习它),但任何东西都可以。
提前感谢
这是一个奇怪的请求,但我正在寻找有缺陷的Python代码。我想了解更多关于错误和调试器的知识,并且需要一些有缺陷的代码来进行操作。不幸的是,我写的所有代码都很短小并且没有错误(到目前为止)。
最好不要是GUI相关的(因为我刚开始学习它),但任何东西都可以。
提前感谢
不确定如何有意识地搜寻带有漏洞的源代码,但您可以查看主要Python项目(以及较少使用的项目)的错误跟踪器,查找报告所涉及的错误并进行调试。这是一个双赢的局面。您可以获得调试技能,他们(希望如此)可以获得修补程序来解决错误 :-)
这是一个不错的例子,看看有没有 bug ;)
只是一些代码,几年前曾经让我遇到过问题。
methods = []
for i in range(10):
methods.append(lambda x: x + i)
print methods[0](10)
lambda
。我只是非常有限地使用它。但我看到每个 method[n](10)
的每个数字都给出了19... 没有头绪。 - avacariui
不是lambda
的本地变量。因此,它从父范围获取i
,这将是range(10)
返回的最后一个数字。学习作用域如何工作是一个重要的课程。解决这个问题的一种方法是这样做:methods.append((lambda y: (lambda x: x + y))(i))
。这样,您可以将该值添加到包装lambda函数的本地范围中。 - Wolphlambda x, i=i: x+i
。参数 i 将被初始化为循环中当前的 i 值。 - Dave Kirby调试的工作70%是在从异常报告中找出错误并弄清楚它,然后才能采取行动,而30%则是在修复错误时如何避免让整个程序崩溃。
如果你只是被告知代码有问题,或者只是被给予有缺陷的代码,那么你的处境比起一开始就更糟糕了。
我认为劳伦斯的评论非常准确,在一个有现实约束和足够代码库的项目中,去寻找已经被跟踪和记录下来的问题,并且有可重复的步骤,这将是一个很好的练习。当你需要解决一个陌生的代码库时,这也可以作为学习阅读的好机会。