Python中的变量名不能以数字开头,或者可以吗?

斯蒂芬

这虽然有些学术性,但是仍然可以。

Python语法禁止以数字开头的变量名,但是可以这样避免:

>>> globals()['1a'] = 1
>>> globals()['1a']
1

同样适用于locals()

这是否意味着Python实际上允许它,并且它不是很明显?

编辑:

我的问题不是是否允许。我知道Python正式禁止使用它。问题是,为什么我可以通过globals()直接解决来解决它,如果这违反了某些规则或准则,或者它是否甚至有充分的理由/应用程序允许这样做。

Uriel:

Python解析器禁止以这种方式命名变量,以便分别解析数字和变量,因为命名变量1e1会造成混乱-是数字10.0还是变量1e1

“ Python,请为我输出1e1!” -“为什么是10.0?我在那儿存储了100!”

但是实际上,变量的存储方式允许将以数字开头的字符串绑定到值,因为该功能在任何类型的哈希映射中均无害,因此使用此“技巧”,您可以实现所需的数字-前缀名称变量,而不会影响解析器的可分割性。

我要说的是,从技术上讲,以这种方式命名变量并不违反 python准则,但是强烈建议不要这样做,并且通常是不必要的。使用globals注入变量是一种非常不好的做法,这种情况不应该是一个突出的案例。


当然,python可以使用诸如字符串之类的数字括起来*123*,但是我相信发明python的目的是使编程更容易,而不是扩展变量命名空间的限制。


实际上,如果必须使用带数字开头的名称,则最好使用自己的字典,而不是globals

>>> number_headed_vars = {'1a': 100}
>>> number_headed_vars['1a']
100

这样,您可以创建自己的变量系统-避免滥用globals()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章