【发布时间】:2017-01-31 16:21:47
【问题描述】:
这有点学术,但尽管如此。
Python 语法禁止以数字开头的变量名,但这可以像这样回避:
>>> globals()['1a'] = 1
>>> globals()['1a']
1
locals() 也是如此。
这是否意味着 Python 实际上允许它,并且它不是很明显?
编辑:
我的问题不是是否允许;我知道它在 Python 中是正式不允许的。问题是为什么我可以通过直接寻址 globals() 来解决它,如果这违反了某些规则或准则,或者如果它有充分的理由/应用程序允许这样做。
【问题讨论】:
-
解析器不允许这样做,但你可以通过劫持
globals()来做到这一点。但你并不是真的打算这样做。 -
以后不能用它作为变量了……所以它不是真正的变量,即使它在同一个命名空间中。
-
你的答案(重复):stackoverflow.com/questions/342152/…
-
@steffan 修改
locals不起作用[docs.python.org/3/library/functions.html#locals] 所以你只能在globals中做这个技巧 -
@DavidW 我刚试过......它适用于 Python 3.6.0 和 2.7.13
标签: python variable-names