Python 编程中程序员常犯的错误有哪些?


以下是程序员常犯的一些最常见的 Python 编程错误/陷阱:

  • 作用域名称查找 - Python 按照 LEGB(局部、嵌套、全局、内置) 的顺序遵循作用域规则。由于 Python 没有严格的类型绑定,程序员可以将外部作用域变量重新关联到另一个值,该值以后可能在外部作用域中使用,但现在已被替换为其他值。

  • 不区分 is 和 == - Python 中的 is 运算符检查两个对象是否引用同一个内存地址。== 运算符执行 __eq__ 函数,该函数可能针对不同类以不同的方式检查相等性。

  • 在迭代时修改列表 - 如果在迭代时从列表中删除元素,则会得到 IndexError。这是因为列表在缩小,而索引没有随之缩小。

  • 闭包绑定:请考虑以下代码:

示例

listLambdas = [lambda x : i + x for i in range(5)]
for lam in listLambdas:
   print(lam(10))

输出

这将给出以下输出

14
14
14
14
14

震惊了吗?这是由于绑定闭包造成的。此列表中的所有 lambda 都引用变量 i,即当它发生变化时,这些 lambda 开始引用新值。

  • 与内置函数名称冲突 - 您一定在某个时候创建了一个名为 sum 的变量。请注意,在这种情况下,您重新分配了对 sum 函数的引用。对于像这样的事情,这看起来微不足道,但当包以这种方式命名时,可能会导致一些严重的问题。这可能导致其他包导入您的类而不是标准类。

  • 运算符的非直观实现 - Python 提供了一种为类重载运算符函数的方法。通常,人们倾向于以一种不常见的方式实现这些运算符,并最终创建复杂且非直观的 API。

更新于: 2020-03-05

99 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告