web-dev-qa-db-ja.com

Pythonの変数名は数字で始めることはできませんか?

これはややアカデミックですが、それでもなお。

Python構文では、変数名を数字で始めることは禁止されていますが、これは次のように回避できます。

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

locals()についても同様です。

それはPythonが実際にそれを許可し、それがあまり見えないということですか?

編集:

私の質問は、それが許可されているかどうかではありません。 Pythonでは正式に許可されていないことを認識しています。問題は、なぜglobals()に直接対処することで回避できるのか、それが特定のルールやガイドラインに違反するのか、それを許可する正当な理由/アプリケーションがあるのか​​、ということです。

23
steffen

これは、グローバルで1aを使用して実行できることと実行できないことです。グローバルでその定義をすべて使用しない限り、変数で実際に使用することはできません(その辞書にアクセスすることを意味します)。

基本的に、次の出力に示すように、1aa1のような実際の変数ではありません。

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

>>> a = 1a
File "<stdin>", line 1
    a = 1a
         ^
SyntaxError: invalid syntax

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

>>> globals()['a1'] = 5
>>> a = a1
>>> a
5
7
Ofer Arial