「演算子」という言葉の定義は？(Python 、他言語)


Pythonで=（代入記号）は演算子ではない  
と言われますが、  
では演算子という言葉の定義は何なのでしょうか？

Pythonの場合と、他の言語で違う場合は、両方教えていただけると幸いです。




一般論として、プログラミング言語では **expression; 式** と **statement; 文** とを区別しています。`1 + 1`は
**式** ですし、以下は **if文** です。

[code]

    if x > y:
        x
    else:
        y
    
[/code]

そして、 **文** に **式** を含めることはできますが、その逆、 **式** に **文** を含めることはできません。何を **式** とし、何を
**文** とするかはプログラミング言語毎に異なります。

その上で、 **式** を構成する要素に **operator; 演算子** があります。`1 + 1`では **加算演算子** が登場しています。

* * *

という前提の元、Pythonにおける[ **演算子**
は次のように定義](https://docs.python.org/ja/3/reference/lexical_analysis.html#operators)されています。

> ## 2.5. 演算子
>
> 以下のトークンは演算子です:
[code]

>     +       -       *       **      /       //      %      @
>     <<      >>      &       |       ^       ~       :=
>     <       >       <=      >=      ==      !=
>  
[/code]

見ての通り、 **演算子** の一覧に`=`は含まれていません。`=`はどこで定義されているかというと[ **assignment statement;
代入文**](https://docs.python.org/ja/3/reference/simple_stmts.html#assignment-
statements)となっています。

もちろん他の言語での定義はそれぞれ異なります。一例として[C++言語における`=`は代入演算子](https://ja.cppreference.com/w/cpp/language/operator_assignment)となっています。

