python 命名常见错误

我一直觉得自己学习了很久的python,常见的错误不会再犯了,然而就在前几天被狠狠地打脸,一个命名错误让我浪费了20分钟。这里整理一下常见的命名方面的错误。
1.变量名使用python内的关键字

a = 3
b = 4
sum = 5
print(sum(a + b))
"""
TypeError: 'int' object is not callable
"""

我们看到这里我们我们给sum赋值了一个5,而sum我们知道是pythonBIF(build-in-functions)中的关键字,sum本身是一个可以被调用的函数,但是由于我们给它赋值了5,此时的sum被编译器认为是一个变量存储着整数类型5,而此时我们想要调用sum求和函数去计算a+b的值就会让编译器很疑惑,从而给出类型错误,整数类型不能够被调用。也就是说我们对sum的赋值操作屏蔽了sum求和函数本身的功能。
这个问题如果我们采用类就可以被很好的解决,代码如下:

class Debug:
    def __init__(self):
        self.sum = 5
        self.list = [2, 3]
        
    def mainProgram(self):
        print(sum(self.list, self.sum))


if __name__ == "__main__":
    main = Debug()
    main.mainProgram()

我们可以看到,sumlist均为python中的关键字,但是并不会影响我们对sum函数本身的调用,因为我们将sumlist变量定义为了这个Debug类的属性,编译器此时是可以将二者区分开的。但是为了养成一个好的习惯,这种方式还是不推荐使用,使用self.sum1或者self._sum可能会更好。
2.变量名以数字开头

a = [3]
b = 4
3Q = sum(a, b)
print(3Q)
"""
SyntaxError: invalid syntax
"""

我们看到提示语法错误,变量名是不能够以数字开头的
3.脚本.py文件不推荐以数字开头命名
这是因为主程序,也就是当前程序我们用数字开头来命名是没有问题的,比如我们可以命名为2.py。但是如果当我们想要在另一个程序中导入这个以数字开头命名的文件时就会报错。

import 2.py
"""
SyntaxError: invalid syntax
"""

我们可以看到编译器就会提示语法错误。因此以数字开头命名脚本文件应该被禁止,不推荐使用。
4.脚本文件名称与已安装模块名称冲突
我们知道用户是可以自己发布包的,如果我们将我们的文件命名成为一个已经安装的模块,那么我们在导入已经安装的模块时,编译器就会疑惑究竟该使用哪一个文件,很有可能造成引用到了我们定义的同名文件,而导致安装的模块无法正常导入。就好比是真假美猴王,长的一模一样,名字也一模一样,就没有办法进行区分了。
5.类名与变量名冲突
这也是上一次导致我浪费了20分钟的问题,开始一直找不到问题,代码如下:

class image3:
    def __init__(self, image3):
        self.image3 = image3
        
    def mainProgram(self):
        print(self.image3)


if __name__ == "__main__":
    image3 = [2, 3]
    main = image3(image3)
    main.mainProgram()
"""
 'list' object is not callable
"""

我们可以看到这里我将一个类的名称和一个变量名称重复使用了,就会产生错误,这里的错误很清楚,因为我在if __name__ == "__main__":下定义了一个列表image3,然后这个image3就会屏蔽掉类名image3,从而当我想要初始化类image3对象的时候,告诉我列表对象不能够被调用。当然也许你们会觉得可笑,但是当代码长起来后,并且参数调用不这么直接时这个错误就没有那么好找出来了,在代码运行的时候当我调用image3时,程序就会被引导到比较奇怪的位置,有时候甚至还不会有错误提示。由于我原始的代码比较长,这里就不发出来了,但是我们在定义类的时候一定要避免与我们想要定义的变量名称发生冲突。
如果大家觉得有用,请高抬贵手给一个赞让我上推荐让更多的人看到吧~

你可能感兴趣的:(python中容易被忽略的,python,命名错误)