任何事情只要有人规定成文了,必定有其原因所在,也就是有其合理性所在。

Python变量命名规则(推荐学习:Python视频教程)

变量名只能包含字母、数字和下划线。变量名可以字母或下划线开头,但不能以数字开头,例如,可将变量命名为message_1,但不能将其命名为1_message。

变量名不能包含空格,但可使用下划线来分隔其中的单词。例如,变量名greeting_message可行,但变量名greeting message会引发错误。

不要将Python关键字和函数名用作变量名,即不要使用Python保留用于特殊用途的单词,如print。

变量名应既简短又具有描述性。例如,name比n好,student_name比s_n好,name_length比length_of_persons_name好。

慎用小写字母l和大写字母O,因给他们可能被人错看成数字1和0;

注意:应使用小写的Python变量名。在变量名中使用大写字母虽然不会导致错误,但避免使用大写字母是个不错的注意。

那么它为什么不能以数字开头呢?这应该要从编译原理的角度来解释了吧。

这是我今天在做脚本解析时突然想到的。先来说明一下我们的这个语法解析工具,要解析的脚本很简单,只包括了&,|,~,=,!=,()和{}等操作符。开始时采用了编译原理的那一套,画NFA、DFA,找出状态然后再写词法分析生成Token,接着语法分析将生成的Token根据语义生成语法树,最后求值。后来想一想,这个脚本很简单只需要一个一个字符判断遇到不同类型的字符就进入到不同的子函数中进行处理,同时完成词法解析和语法分析以及求值的过程。不过无论使用那种方法都需要根据读入的字符来判断当前进入到哪个Token里了,这就是问题的关键所在。

为什么说判断字符属于哪个Token是关键呢?

假设我们取消掉了变量名定义中不能以数字开头的限制,这时当词法分析器进入到一个Token分析的起始状态时,如果读取的第一个字符为数字,那么词法分析器是无法判断它当前要分析的这个Token是变量名还是数字常量了。好,如果你说分析器可以根据后面的字符来判断的话,那么如果下一个字符为字母,那么很容易就判断出当前Token属于变量名(我们暂且忽略保留关键字),但是当如果接下来的字符全都是数字那怎么办?分析器将无法判断,因为变量名的定义中允许数字的存在。

呵呵,上面也许说的比较绕口难于理解,用句简单的话来讲就是:当分析"123"这个字符串的时候,如果变量名允许第一个字符为数字,分析器就不知道“123”该是数值常量还是变量名了。

更多Python相关技术文章,请访问Python教程栏目进行学习!

python为什么不能以数字开头_python变量为什么不能以数字开头相关推荐

  1. python变量名必须以什么开头_python变量为什么不能以数字开头

    任何事情只要有人规定成文了,必定有其原因所在,也就是有其合理性所在. Python变量命名规则(推荐学习:Python视频教程) 变量名只能包含字母.数字和下划线.变量名可以字母或下划线开头,但不能以 ...

  2. python常量基本类型有哪些_Python变量,常量,基本数据类型,输入用户交互,基础,input...

    Python变量 我们先看这样几个表达式 print ('hello world') print(1+2+3+4+5) print((1+2+3+4+5)*3/2) print((((1+2+3+4+ ...

  3. python随机生成六位数密码_python生成6位包含数字和字母的密码

    初学python,简单敲了几行生成6位包含数字和字母密码的代码 (我是在python 3上敲的) 首先理清思路: 1.包含数字和字母的六位口令共有36^6个 2.将0-9和a-z合成一个字符串pwd, ...

  4. php判断一个字符串是否为纯数字,php判断变量是否为纯数字字符串的方法

    在php中有时候需要判断一个变量的值是否为数字或是否为数字字符串,而php中也提供了一个很好用的内置函数 is_numeric(),可以很轻松的来检测变量. php is_numeric() 函数介绍 ...

  5. 为什么python的命名不能以数字开头_python变量不能以数字打头

    在编写python函数时,无意中发现一个问题:python中的变量不能以数字打头,以下函数中定义了一个变量3_num_varchar,执行时报错. 函数如下: def database_feild_v ...

  6. python变量名由什么组成_Python变量名可以由数字、大、小写英文字母和 下划线组成。...

    步骤是(,变量行行析运用演绎业分法进. 名可母和本位的亲度是的(现代么为以什各国属制. 数字为专权作人身属权. 写英下划线组的地点(合同成立书面. 的关系依相之间关两个债,文字为(债分. 的子一方女抚 ...

  7. python中小写字母和数字用什么表示_Python变量名可以由数字、大、小写英文字母和 下划线组成。...

    包装别标标志险性应在有主种危次两上分,变量那么在运质时类物输此,危险危险性货物一种主要既有如果. 不得惯溜放.名可母和摔,卸货气瓶时. 排除可以及时静电,数字到安目的以达全运输的,带中的金地面橡胶拖地 ...

  8. python语言中变量名必须以字母或下划线开头_Python变量名必须以字母或下划线开头,并且区分字母大小写。...

    在将数据从内存移到CPU执行时,变量并只需要考虑数据从总线移到Cache的性能. 用基准物CaC2O40.1623g配制成标准溶液后标定KMnO4,名必母到达终点时用去KMnO421.03ml,KMn ...

  9. python图片数字识别_python 识别图片上的数字

    https://blog.csdn.net/qq_31446377/article/details/81708006 ython 3.6 版本 Pytesseract 图像验证码识别 环境: (1) ...

最新文章

  1. 数据库高性能读写分离集群操作说明
  2. 必知必会的微服务面试题
  3. 我用90年代的古董电脑训练CNN
  4. Dokcer安装Redis
  5. LeetCode Algorithm 451. 根据字符出现频率排序
  6. Topic交换器-搭建环境
  7. 群晖pxe安装windows_通过PXE快速部署VMware ESXi 6.5
  8. 【SQL*PLUS】Copy Command
  9. 信息与计算机科学二级学科,《信息计算与智能系统》二级学科 硕士研究生培养方案...
  10. like效率 regexp_Oracle中REGEXP_LIKE与LIKE的区别
  11. 微信小程序常用UI组件库
  12. OBJ 模型文件与MTL材质文件 介绍
  13. SMART PLC PID仿真 (SMART PID仿真库使用说明)
  14. wps一直显示正在备份怎么办_wps怎么解除自动备份
  15. HTML无法显示下一页,为何我的浏览器不能直接打开下一页
  16. 从二维到三维,可见Web3D技术的重要性,让线上3D产品展示所见即所得
  17. 【SSM】Mybatis
  18. 通信总线传输速率计算
  19. CF卡转模式(本地)
  20. 2023南京大学文博专业考研上岸经验

热门文章

  1. 论文笔记 Hierarchical Reinforcement Learning for Scarce Medical Resource Allocation
  2. pandas笔记:根据列索引名称/行索引名称 对列重新排序
  3. 万物之始正则表达式全解析三部曲(上篇)-正则表达式基础知识及语法
  4. 深度学习核心技术精讲100篇(六)-keras 实战系列之知识蒸馏(Knowledge Distilling)
  5. Python 黑魔法 --- 描述器(descriptor)
  6. 原理+实践,Kafka MirrorMaker使用与性能调优全解析
  7. spring boot源码分析之SpringApplication
  8. android studio 与gradle的版本对应
  9. 金融风控实战——特征工程上
  10. List list= new ArrayList为什么这样写 接口引用指向实现类的对象