これはややアカデミックですが、それでもなお。
Python構文では、変数名を数字で始めることは禁止されていますが、これは次のように回避できます。
_>>> globals()['1a'] = 1
>>> globals()['1a']
1
_
locals()
についても同様です。
それはPythonが実際にそれを許可し、それがあまり見えないということですか?
編集:
私の質問は、それが許可されているかどうかではありません。 Pythonでは正式に許可されていないことを認識しています。問題は、なぜglobals()
に直接対処することで回避できるのか、それが特定のルールやガイドラインに違反するのか、それを許可する正当な理由/アプリケーションがあるのか、ということです。
これは、グローバルで1a
を使用して実行できることと実行できないことです。グローバルでその定義をすべて使用しない限り、変数で実際に使用することはできません(その辞書にアクセスすることを意味します)。
基本的に、次の出力に示すように、1a
はa1
のような実際の変数ではありません。
>>> 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