lambda
明らかにキーワードです。これはパーサーによって認識される特別な単語であり、そうでなければ。の定義に含まれますidentifier
。
lambda
意味的には演算子ではありません。演算子は単なる関数ですが、異なる構文で呼び出されます。+
演算子をadd
関数に置き換えることを想像できます。追加されたすべてのプログラムは、より冗長になり、読みにくくなりますが、それでも書き込むことができます。一方lambda
、言語構成は関数に置き換えることができませんでした。は、値とlambda x: x+1
の結果を計算するだけではありません。これは、このコンテキストでは値ではないためです(は、定義されている関数のパラメーターの名前であり、ラムダ本体のコードです)。x
x+1
x
x+1
リンクした同じページに次の情報があります:http://docs.python.org/py3k/reference/lexical_analysis.html#operators
次のトークンは演算子です。
+ - * ** / // %
<< >> & | ^ ~
< > <= >= == !=
これが、演算子に関するサブセクションの内容全体です。このことから、言語のトークンを定義する文脈では、「演算子」は記号演算子であるのに対し、キーワードのセクションでは、「そうでなければ識別子になるこれらのものはキーワードである」と明示的に綴っています。そのため、、、、などnot
のキーワード演算子はリストされていないと思います。しかし、パーサーがそれらを別々のクラスと見なすかどうかに関係なく、キーワードである意味演算子であるものは確かにあります。is
in
http://docs.python.org/py3k/reference/expressions.html#summarylambda
が演算子として記述されている理由がわかりません。私は確かにそうしません。厳密に言えば、「優先順位が最も低い演算子である」と明示的に言うのではなく、列見出しが「演算子」であるテーブルlambda
にリストするだけです。lambda
おそらくそれは単なる便宜でした。lambda
優先順位の低いものとして記述することは、Pythonがどのように解析するかを明確にする良い方法ですlambda x: x + 1
(理論的にはまたはのいずれかである可能性があります(lambda x: x) + 1
)lambda x: (x + 1)
。