当前位置: 首页 > 科技观察

在Python中你通常不应该犯的7个错误

时间:2023-03-14 22:07:50 科技观察

简介Python是一种相对容易上手的语言,但是由于假设了很多东西,所以很容易犯错误。此外,这些错误可能会在很长一段时间内被忽视。在我的其他四大菜鸟Python错误之前。避免这些新手Python错误它们可能有效,但可能更好。今天再分享一些Python3.8容易犯的错误。№1:+=我在很多情况下犯的一个错误当然是采用+=操作数。似乎很容易假设加法必须用两个单独的操作数完成,一个用于加法,另一个用于断言。幸运的是,Python(以及许多其他编程语言)支持可以执行数学运算和断言运算的操作数。代替:x=x+5做:x+=5№2:位置参数符号在大多数现代脚本语言中,有两种主要类型的参数可以用作函数的参数:位置参数和关键字。在Python3.8发布之前,没有办法表示位置参数,这使得位置参数默认值基本上不可能。然而,由于更改已在Python3.8中更新,我们可以使用.您应该使用它们,因为位置参数是具有出色性能的良好Python代码的基础。如果您的代码在Python中需要弥补一件事,尤其是在机器学习方面,那很可能就是性能。关键字参数在函数定义时计算一次。这对递归算法的性能尤其不利。如果您正在编写成本函数,则绝对必须使用位置参数。这并不是说根本不应该使用它们,但是,最好尽可能使用位置参数。而不是:defnumbers(custom,five=5,ten=10,fifteen=15):total=five+ten+fifteen+customreturn(total)do:defnumbers(custom,\,five=5,ten=10,fifteen=15):total=five+ten+fifteen+customreturn(total)同样重要的是要记住这个特性是相当新的,所以仅使用位置参数来提高性能的概念将仅限于Python3.8+№3:初始化返回虽然这确实不常见,而且可能是一个相当菜鸟的举动,但我看到人们试图在他们的初始化函数中执行返回。在Python的面向对象世界中,每次实例化类时都会调用__init__函数。初始化器对于设置变量、移动数据和构造类型很有用。强大责任重大,Python的__init__函数应该用于类的初始化,不是监听,不是循环,不是直接执行,只是类的初始化。请(我有经验的人正在这样做!)不要返回init!(这没有任何意义!)№4:循环依赖,你的包将相互依赖。这可能是非常有问题的,并可能导致所谓的“循环依赖”。发生这种情况时,当模块周围的不同位置试图相互访问时,您可能会遇到问题。№5:空格还是缩进?如您所知,Python使用缩进而不是定界符将代码包含在其他代码中。对于许多人来说,这使代码更易于阅读和编写,尽管我个人主观上鄙视它。但是,在其他语言中,我一般倾向于使用缩进(tab键)来缩进代码。但是,根据PEP8,应该使用四个空格进行缩进。老实说,这是我只有在和很多人一起做项目时才会遵循的原则。对我来说,我不认为空格或缩进是重要的事情,只要它是一致的,但正式地你应该使用空格。话虽如此,在为某些工作或需要许多其他用户遵守的大型项目编写实际代码时,遵循PEP8的标准可能是个好主意。№6:BlockIteration在执行迭代循环时,编写完整的循环可以很容易地在代码中表达你的想法。但是,一般来说,如果您需要做的事情只需要一行,那么最好循环一行。这不仅会使您的代码更漂亮、更简洁,而且还可以提高性能。而不是:foriinx:i+=5do:[i+5foriinx]№7:practicedstrings对于要考虑的最后一个错误,我想谈谈practicedstrings。在某些情况下,Python会尝试重用不可变对象,而字符串驻留是一种实际可行的情况。所有长度为1的字符串都被屏蔽。除了ASCII字符、数字和下划线之外,字符串中没有任何内容。在这里,我尝试创建两个不同的对象a和b,但这不是Python所做的。Python实际上使b成为指向a的指针,而不是生成新的字符串。但是,如果我们添加ASCII字符:所以在使用不可变字符串时请记住这一点,因为它肯定给我带来了很多麻烦。