不知道大伙在学编程的时候有没有这样的疑问:
“变量名为什么宁可使用_这种符号开头,也不能使用数字开头?”
今天我们就来分析下这个规定存在的原因。
先声明:并不是所有语言都不支持数字作为开头的变量名。
重温对变量的定义
变量是一种用于存储和表示数据的标识符。
变量名是给定变量的名称,可以在代码中引用该变量。
重温 Python 的命名规则
- 第一个字符必须是字母表中字母或下划线 _;
- 标识符的其他的部分由字母、数字和下划线组成;
- 标识符对大小写敏感。
“在 Python3 中,可使用中文作为变量名,非 ASCII 标识符也是允许的了。
人类容易造成混淆
假如允许首数字的变量名存在,那么下面这行代码我们将如何理解?
0x756b5b3 = 0x756b5b3
我将一个十六进制的数赋给了 0x756b5b3
变量???
如果我后面把值 0x756b5b3
修改了,那 0x756b5b3
变量肯定会干扰我正常的思绪。
这里肯定有人说了,不要起那么复杂的变量不就行了
再看看下面的这行代码:
1e5 = 1e6
我要使用 1e5
的时候,却给了我 1e6
(值)。。。我估计会炸吧。。。
如果都使用这种命名规则,我是会分不清它是一个变量还是一个数字常量。
所以编程语言中不允许使用数字作为变量的开头,很大一部分原因是为了避免与数字常量产生混淆,提高代码的可读性和可维护性。
计算机容易造成混淆
在编译器或者解释器都会有一个词法分析器。
词法分析器在判断一个词是否以数字开头,如果是以数字开头则把它当作数字常量处理,否则当作普通单词处理。
这个规则可以提高不少词法分析器的效率。
总结
虽然有很少部分编程语言可能允许数字作为变量的开头,但这并不是一个良好的编程实践。
在日常编写代码时,我们都应该遵循语法规则和良好的编程实践,选择有意义的变量名来提高代码的可读性和可维护性。
彩蛋
请阅读以下代码,看你先崩溃还是电脑先崩溃?
1 = 2
if 1 == 2:
print("1 等于 2 吗?")
else:
print("2 等于 2 吗?")