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。
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP