使用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 _ _”命令被调用时,代码中的一个名字被设置为 “无”。相反,在关闭解释器之前,使用 “atexit.register() “ 来启动注册的处理程序。
误用 init
构造器在 Python 中由一个叫做 init 的函数表示。当一个对象形成时,init 方法被调用,它分配内存并初始化类的属性。因此,试图从init方法中明确地返回一个值会产生一些错误,并在代码中造成困难。
带有默认参数的函数调用
对于初学者来说,带有默认参数的函数是Python中一个奇妙的功能。参数是很难利用的。因为Python在每次声明函数时都会评估默认参数中的表达式,所以必须动态地生成默认参数。因此,必须照顾到这一点。
滥用表达式
在 Python 中,你可以通过给一个函数参数分配一个缺省值来使其成为可选项。然而,当你把缺省值静音时,这种行为会让人感到困惑。
为了防止错误地使用表达式,为可选参数提供一个合适的值,因为函数参数的默认值只考虑一次–一旦函数被声明。
名称冲突
Python 有大量的库模块,所以它为软件开发者提供了很多东西,这并不令人震惊。然而,如果你选择避开这些财富,你就有可能发生名称冲突。当你的一个模块的名称与 Python 标准库中具有相同名称的模块相混淆时,就会发生冲突。
结果,你可能会导入另一个库,这可能会干扰你的标准库中的模块版本。因此,避免选择与 Python 标准库中的模块相似的名字。我们总是可以通过提交 Python 增强建议 (PEP) 来要求更改名称 。
创建循环模块依赖关系
因为 Python 理解不要重新导入一些东西,所以拥有循环的模块依赖关系一开始可能是安全的。然而,你可能在某个时候得到一个 AttributeError 异常,这是不可取的。解决办法是什么呢?用 () 改变一个模块。
不使用注释和文档字符串
注释是编程的一个重要组成部分。注释提高了代码的可读性和自我解释能力。如果你不使用注释或文档字符串会怎样?这可能是很可怕的!代码可以迅速从10行增长到10000行,使调试变得困难。因此,使用注释和文档字符串确实是有益的。
犯错误是生活和编程的一个自然方面。而且,错误可能会发生,但知道哪些错误会发生以及如何修复它们是至关重要的。
没有正确地指定参数
“正如人们所期望的那样,except语句没有考虑到异常列表,”科技博客作者Rory Barak认为。”相反,语法异常将异常连接到指定的可选第二参数”。继而,’IndexError’异常没有被except语句检测到,也没有被正确地作为一个参数给出。”
“一种选择是将第一个参数定义为一个元组,包括所有必要的异常,同时利用关键字’the’。
结论
通过避免这些典型的Python错误,你可以确保你的代码不仅是符合逻辑的,而且是长期有效的。总是反复检查你的编码,纠正任何看起来不正确的东西。你最不希望看到的就是代码中充满了错误。