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()。