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, in
print(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错误,您可以确保您的代码不仅在逻辑上是正确的,而且在长期运行中也能正常工作。始终仔细检查您的编码,并纠正任何看起来不正确的地方。您不希望最终得到充满错误的代码。