質問: Pythonで=(代入記号)は演算子ではない と言われますが、 では演算子という言葉の定義は何なのでしょうか? Pythonの場合と、他の言語で違う場合は、両方教えていただけると幸いです。
回答: 私の知る限り、「演算子 (operator)」という言葉について Python 一般で広く使われている公式の定義は無いはずです。もう少し限定して「Python の字句解析に置ける operator」だったら定義があったりしますが、だからと言って代入の `=` を演算子と呼んではいけないとまでは言い切れないはずです。Python ドキュメントの用語集 (Glossary) にも "operator" は載っていませんし、言葉の綾かもしれませんが 1 箇所 "assignment operator" と書いてある箇所もあります。 ただし、よくある区別としては、Python の代入は「文 (statement)」であるが「式 (expression)」ではない、という話があります。つまり、Python における代入は値を返しません。具体的には `a = (b = 42)` と書いても `b = 42` が何かしら値を返す訳ではなく、エラーになります。 プログラミング言語の中には、代入が値を返す言語もあります。たとえば C 言語では `b = 42` を評価した際に変数 `b` に `42` を代入するだけでなく `42` を返り値として返すので、`a = (b = 42)` と書くと変数 `a` にも `42` が代入されます。C 言語においては代入も何かしら値を返す "式" と考えることができます。 まとめると、Python の代入 `=` を分かりやすさのために「代入演算子」と呼ぶこともありますが、`+` や `==` といった他の演算子とは性質が異なり、値を返しません。他のプログラミング言語では値を返すように設計されていることもありますが、Python では値を返しません。