目的
ちょっと、python(python3)で不思議な動きをみたので、
情報共有。
ちなみに、なんの実害もありません。
(あえて、提示しているのは、少しでも、理解を深めて、役立つことにどこかで役立たせるためです。)
不思議な現象
なぜ、「あ」とか「い」が許されて、計算までできて、
10abc、まあ、これは、仕様上NGですが、許されない???
文字コードのアヤですか?
ワタシは、いま、答え、わかってません。
>>>
>>> あ = 3
>>> い = 4
>>> あ + い
7
>>>
>>>
>>> 10abc = 3
File "<stdin>", line 1
10abc = 3
^
SyntaxError: invalid syntax
>>>
>>>
仕様通りでした、すみません
以下のリファレンスによると
https://docs.python.org/ja/3/reference/lexical_analysis.html#identifiers
ASCII 範囲 (U+0001..U+007F) 内では、識別子として有効な文字は Python 2.x におけるものと同じです。大文字と小文字の A から Z、アンダースコア _、先頭の文字を除く数字 0 から 9 です。
Python 3.0 は、さらに ASCII 範囲外から文字を導入します (PEP 3131 を参照してください。)。これらの文字については、分類は unicodedata モジュールに含まれる Unicode Character Database の版を使います。
識別子の長さには制限がありません。大小文字は区別されます。
すみません、python3では、使っていいみたいです。
ちなみに、全角のダブルクォーテーションとかは、ダメみたいです。
>>>
>>> ”あ” = 3
File "<stdin>", line 1
”あ” = 3
^
SyntaxError: invalid character in identifier
>>>
まとめ
別の内容を記載しようと思って、作業していたら、
変な現象に出会ったので、情報共有。
ユニコードマジック???
もしかすると、スクリプトとかではよくあるのかもしれません。。。スクリプト言語しらないので、ワタシだけが衝撃を受けているのかも。。。。
すみません、python3では、仕様的にOKらしいです。
関連(本人)
pythonをストレスなく使う!(generatorに詳しくなる。since1975らしい。)
pythonをストレスなく使う!(Pythonでは、すべてがオブジェクトとして実装されている)
pythonをストレスなく使う!(Pylintに寄り添う)
pythonをストレスなく使う!(ExpressionとStatement)
英語と日本語、両方使ってPythonを丁寧に学ぶ。
今後
コメントなどあれば、お願いします。
勉強します、、、、