一、变量命名规则
在 Python 中,变量的命名有着严格的规则。首先,变量名只能由字母、数字和下划线组成。
例如,"abc"、"abc123"、"_abc"、"hello" 这些都是合理的变量名,而 "@abc"、"abc-123" 则是不合理的,因为它们包含了不被允许的字符。
其次,变量名不能以数字开头。这是为了避免与数字类型产生混淆。如果允许变量名开头是数字,则无法区分变量名和数字类型,比如如果变量名 "091" 合法,程序无法区分这个变量和数字 091。
另外,有些数字可能含有字母,如浮点数 "1E10"。程序设计语言不能存在歧义,所以约定变量名开头不能是数字。
同时,变量名严格区分大小写。"abc" 和 "ABC" 是两个完全不同的变量。
此外,不能使用内置关键字作为变量名称。Python 中有 33 个关键字,如 "False"、"await"、"else"、"import"、"pass" 等,还有一些内置函数,如果将它们用作变量名,虽然不会导致错误,但会覆盖这些函数的行为。
变量的命名方式有大驼峰、小驼峰和下划线三种方式。大驼峰即每个单词首字母都大写,例如 “MyName”;小驼峰是第二个(含)以后的单词首字母大写,例如 "myName";下划线方式例如 "my_name"。官方推荐以下划线的方式进行命名。
总之,遵守变量命名规则可以使代码更加规范、易读、易于维护。
二、常见命名方式
(一)下划线命名法
在 Python 中,下划线命名法是一种常见的变量命名方式。它采用小写字母和下划线组合构成变量名,例如 "my_variable"、"user_name" 等。这种命名方式的优点在于清晰易读,通过下划线可以很容易地划分出不同的单词,让人一目了然。
Python 推荐使用下划线命名法的原因有很多。首先,它符合 Python 的简洁风格,统一小写的命名方式使得输入相对方便。
其次,下划线可以拉大词距,更清楚易读,提高了代码的可读性。例如,当我们看到 "user_name" 时,很容易理解这是表示用户的名字,而不是一个难以理解的字符串。
此外,下划线命名法在团队协作中也非常有用。当多个开发者共同编写代码时,统一的命名规范可以减少沟通成本,提高代码的一致性。大家都能快速理解变量的含义,从而提高开发效率。
(二)驼峰命名法
驼峰命名法分为小驼峰和大驼峰命名法。
小驼峰命名法:第一个单词以小写字母开始,后续每个单词的首字母大写,例如 "myVariable"、"calculateSum"。
小驼峰命名法通常用于变量、属性和函数名。在 Python 等语言中,这也是一种常见的命名方式。它的优点是通过首字母的大小写变化,可以清晰地区分单词,提高代码的可读性。同时,以大小写为区分,不引入额外的标识符,使得变量名更加简洁。
大驼峰命名法:每个单词的首字母都采用大写字母,例如 "MyVariable"、"CalculateSum"。大驼峰命名法通常用于类名、接口名、命名空间、常量等。在 C# 等语言中,这是标准的命名约定。大驼峰命名法的优点在于更加规范和正式,能够突出类等重要元素的重要性。
然而,驼峰命名法也有一些缺点。对于初学者来说,可能需要一些时间来适应这种命名方式,因为大小写的区分可能会导致一些易错性。在某些情况下,可能会因为大小写错误而导致代码错误。
三、变量命名错误
(一)变量名错误
变量名拼写错误是常见的问题之一。如果变量名写错了,程序会找不到该变量从而引发NameError异常。例如,误将message拼写为mesage,当程序运行到使用这个变量的地方时,就会报错NameError: name 'mesage' is not defined。
此外,违反命名规则也会引发问题,比如变量名中包含空格或者使用了 Python 关键字等。所以在命名变量时,一定要仔细检查拼写,并且严格遵守命名规则,确保变量名既具有描述性又符合规范。
(二)作用域优先级错误
在 Python 中,变量的作用域有局部作用域、嵌套作用域、全局作用域和内置作用域。变量在作用域的查找顺序是当一个变量名被使用时,由离它最近的作用域来解析,即 L(Local)->E(Enclosing)->G(Global)->B(Built-in)。
如果当前作用域为函数作用域,某变量名指向一个局部变量,而此变量在被使用前尚未绑定到特定值,将会引发UnboundLocalError错误。例如,var = 100,在函数中var = var + 1,此时使用var将var视为局部变量,但在使用前它尚未绑定特定值,就会报错UnboundLocalError: local variable 'var' referenced before assignment。
所以在使用变量时,要清楚变量的作用域优先级,避免出现这种错误。
(三)与内置函数冲突
变量命名应避免与 Python 内置函数重名。如果给变量起了和内置函数相同的名字,Python 会优先使用我们定义的变量,而不是内置函数,这可能会导致一些意想不到的结果。
比如定义变量str = "这是字符串",当后续想要调用内置函数str(3)将int类型数据转成字符串时,程序会报错TypeError: 'str' object is not callable。因为此时在当前作用域中,str不再是函数,而是字符串。所以为了避免这种错误,在命名变量时要避免使用内置函数的名字。
(四)以数字开头错误
变量名不能以数字开头。这是为了避免与数字类型产生混淆。如果允许变量名开头是数字,则无法区分变量名和数字类型,比如如果变量名 “091” 合法,程序无法区分这个变量和数字 091。
(五)脚本文件命名错误
脚本文件不推荐以数字开头命名。主程序用数字开头命名是可以的,比如可以命名为 “2.py”。但是如果在另一个程序中导入这个以数字开头命名的文件时就会报错。同时,脚本文件名称也应避免与已安装模块名称冲突。
如果我们将文件命名成为一个已经安装的模块,那么在导入已安装的模块时,编译器可能会引用到我们定义的同名文件,而导致安装的模块无法正常导入。
(六)类名与变量名冲突
类名与变量名冲突可能会引发错误。例如,将一个类的名称和一个变量名称重复使用,就会产生错误。
比如在if name == "main":下定义了一个列表image3,然后这个image3就会屏蔽掉类名image3,从而当想要初始化类image3对象的时候,程序会报错,告诉列表对象不能够被调用。所以在定义类的时候一定要避免与我们想要定义的变量名称发生冲突。
四、总结
以上即为 python 变量命名规则和一些注意事项。