试想一下,为什么python的命名不能以数字开头,python变量名为什么不能以数字开头
只要是写出来的东西,就一定有它的道理,也就是它的合理性。
Python变量命名规则(推荐学习:Python视频教程)
变量名只能包含字母、数字和下划线。变量名可以字母或下划线开头,但不能以数字开头,例如,可将变量命名为message_1,但不能将其命名为1_message。
变量名不能包含空格,但可以使用下划线来分隔其中的单词。例如,变量名greeting_message可以工作,但是变量名greeting message会导致错误。
不要用Python的关键字和函数名作为变量名,也就是不要用Python为特殊目的保留字,比如打印。
变量名应该简短且具有描述性。比如name比n好,student_name比s_n好,name_length比length_of_persons_name好。
慎用小写字母L和大写字母O,因为可能会被误认为数字1和0;
注意:应该使用小写的Python变量名。虽然在变量名中使用大写字母不会导致错误,但避免使用大写字母是个好主意。
那么变量为什么不能以数字开头呢?这应该要从编译原理的角度来解释了吧。
这是我今天做脚本解析时想到的。让我们先解释一下我们的语法解析工具。要解析的脚本很简单,只包括,,~,=,运算符,如=、()和{}。一开始我们采用编译原理,画出NFA和DFA,找出状态,然后写词法分析生成Token,然后语法分析生成基于语义的语法树,最后求值。想了想,这个脚本很简单。它每次只需要判断一个字符,遇到不同类型的字符,就会进入不同的子函数进行处理。同时会完成词法分析、语法分析和评价的过程。但无论采用哪种方式,都需要根据读取的字符来判断当前输入的是哪个令牌,这才是问题的症结所在。
为什么说判断字符属于哪个Token是关键呢?
我们假设变量名不能以数字开头的限制已经取消了。此时词法分析器进入令牌分析的初始状态,如果读取的第一个字符是数字,那么词法分析器就无法判断当前正在分析的令牌是变量名还是数值常量。好了,如果你说分析器可以根据后面的字符来判断,那么如果后面的字符是字母,就很容易判断出当前的Token属于变量名(暂且忽略保留的关键字),但是如果后面的字符都是数字呢?分析器将无法判断,因为变量名的定义中允许使用数字。
呵呵,上面说的可能很难理解。简单一句话,就是:在分析字符串 123 时,如果变量名的第一个字符允许是数字,分析器就不知道 123 应该是数值常量还是变量名。
更多Python相关技术文章,请访问Python教程专栏学习!这就是为什么python不能以数字开头的细节。更多信息请关注热门IT软件开发工作室其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。