使用 Python 时绝对不应该做什么?
在这篇文章中,我们将学习在使用 Python 时绝对不应该做什么。
谨慎使用类变量
在 Python 中,类变量被用作字典,并被称为方法解析顺序 (MRO)。此外,如果一个类缺少一个属性,那么该类就缺少一个特性。也就是说,如果您修改了类中的内容,其他类也不应该发生变化。
缩进不当
在 Python 中,缩进至关重要。Python 在线使用缩进,这与 Java、C++ 和其他使用花括号构建代码块的编程语言不同。许多特性都受到缩进的影响。一些 Python 缩进问题比其他问题更难检测。因此,由于许多 Python 特性依赖于缩进,因此应始终保持一致的缩进风格。因此,在 Python 中,缩进非常重要。
最好为缩进提供4 个空格或一个制表符。
大小写敏感
Python区分大小写。这意味着变量"number"和"Number"是不同的。并且因为这是 Python 新手最常犯的错误之一。
示例
number = 5 print(Number)
输出
Traceback (most recent call last): File "main.py", line 2, inprint(Number) NameError: name 'Number' is not defined
修改和迭代列表
软件工程师经常犯的一个常见错误是在迭代列表时从中删除项目。但是,Python 使用独特的编程范式来克服这个问题。
当正确使用时,范式可以简化并随后简化代码,确保不会意外删除和迭代任何重要项目。
变量绑定
这是一个学习者难以理解和欣赏的主题。Python 支持延迟绑定。Python 开发人员经常对 Python 如何绑定变量感到困惑。它绑定其变量的闭包或在周围的全局作用域中,因此在调用内部函数时查找闭包中使用的变量的值。
误用“_ _ del _ _”
“_ _ del _ _”方法只能在某些情况下使用,而不是一直使用。否则,将抛出“AttributeError”异常。当调用命令“_ _ del _ _”时,代码中的名称将设置为“None”。相反,请使用"atexit.register()"在关闭解释器之前启动已注册的处理程序。
误用 __init__
构造函数在 Python 中由名为 __init__ 的函数表示。当创建对象时,会调用 __init__ 方法,该方法分配内存并初始化类的属性。因此,尝试从 init 方法显式返回值可能会产生多个错误并导致代码出现问题。
带有默认参数的函数调用
对于初学者来说,带有默认参数的函数是 Python 中的一项很棒的功能。参数很难使用。因为 Python 在每次声明函数时都会评估默认参数中的表达式,所以必须动态生成默认参数。因此,必须注意这一点。
误用表达式
在 Python 中,您可以通过为函数参数分配默认值来使其可选。但是,当您静默默认值时,这种行为可能会令人困惑。
为了防止错误地使用表达式,请为可选参数提供适当的值,因为函数参数的默认值只考虑一次——一旦声明了函数。
名称冲突
Python 拥有广泛的库模块,因此它有很多东西可以提供给软件开发人员也就不足为奇了。但是,如果您选择避免这种财富,则有可能发生名称冲突。当您其中一个模块的名称与 Python 标准库中具有相同名称的模块混淆时,就会发生冲突。
因此,您可以导入另一个库,这可能会干扰您标准库版本的模块。因此,避免选择与 Python 标准库模块中名称相似的名称。我们始终可以通过提交Python 增强提案 (PEP)来请求更名。
创建循环模块依赖项
因为 Python 了解不要重新导入某些内容,所以拥有循环模块依赖项起初可能看起来很安全。但是,您可能会在某些时候遇到 AttributeError 异常,这是不希望的。解决方案是什么?使用a ().更改模块。
不使用注释和文档字符串
注释是编程的重要组成部分。注释提高了代码的可读性和自解释性。如果您不使用注释或文档字符串会发生什么?这可能很可怕!代码可以从 10 行快速增长到 10,000 行,从而使调试变得困难。因此,使用注释和文档字符串确实非常有益。
犯错误是生活和编程的自然组成部分。错误可能会发生,但了解可能发生的错误以及如何修复它们至关重要。
未正确指定参数
“正如人们所料,except 语句没有考虑异常列表,”科技博主 Rory Barak 争辩道。“相反,语法异常将异常连接到指定的可选第二个参数。”之后,'IndexError' 异常未被 except 语句检测到,并且未正确作为参数给出。”
“一种选择是将第一个参数定义为包含所有必要异常的元组,同时使用关键字'the'。”
结论
通过避免这些常见的 Python 错误,您可以确保您的代码不仅在逻辑上合理,而且在长期内也能正常工作。始终仔细检查您的代码并更正任何看起来不正确的内容。您最不希望看到的是最终得到一个充满错误的代码。