Python 什么是Python中常见的编程错误或“陷阱”?
下面是程序员经常犯的一些最常见的Python编程错误/陷阱:
作用域名称查找:Python遵循LEGB(Local,Enclosing,Global,Built-in)的作用域规则。由于Python没有严格的类型绑定,程序员可以将外部作用域变量重新关联到另一个值,该值可能在稍后的外部作用域中使用,但现在被某些其他值所取代。
区分is和=: 在Python中,is是一个操作符,它检查两个对象是否引用同一内存地址。 操作符执行__ eq__函数,该函数可能对不同类的相等性进行不同的检查。
在迭代列表时修改列表:如果在迭代列表时删除元素,将会出现IndexError。这是因为列表在缩小大小时,您没有随之缩小索引。
闭包绑定- 考虑以下代码-
阅读更多:Python 教程
示例
listLambdas = [lambda x : i + x for i in range(5)]
for lam in listLambdas:
print(lam(10))
输出
这将给出输出-
14
14
14
14
14
震惊了吧?这是由于闭包绑定。此列表中的所有lambdas都引用变量i,即当它改变时,这些lambdas开始引用新值。
与内置名称冲突: 您可能在某个时候创建了一个名为sum的变量。请注意,在这种情况下,您重新分配了对sum函数的引用。对于这样的事情似乎微不足道,但是当以这种方式命名包时可能会导致一些严重的问题。这可能导致其他包导入您的类而不是标准包。
操作符的非直观实现:Python提供了一种在类中重载操作符函数的方法。往往人们倾向于以不常见的方式实现这些操作符,最终创建出复杂和不直观的API。
极客教程