私はいくつかのPython演算子、算術演算とブール演算をオーバーロードしました。 Pythonの優先順位の規則は有効なままです。これは、オーバーロードされた演算子にとって不自然であり、式の中に大量のカッコがあります。 Pythonの優先順位を「オーバーロード」する方法はありますか?Pythonの演算子の優先順位を変更する
答えて
いいえ、それはPython言語自体の一部です。どのように言語が解析されるか
公式引用:Evaluation order
Pythonは左から右に式を評価します。割り当てを評価する の間に、右側は の左側の前に評価されます。
その他の引用:
Python:Basics:Numbers and operators
混合事業者と数学的演算を実行する場合、Pythonは予め決定に基づいて、第一 を実行するためにどのオペレーションを判定することに留意することが 重要です優先順位。この優先順位は、ほとんどのプログラミング言語と同様の優先順位 に従います。
PythonはPEMDAS order of operationsに付着に注意してください。
主な問題は、pythonはコードの解析中に演算子の優先順位を適用することです。その初期の段階では、Pythonはオブジェクトが実際に式に含まれる型を知ることはできません(コードはまだ実行されていないため)。したがって、演算子の優先順位を変更することができた場合は、一般的な数式を含むすべての式に対して演算子の優先順位を設定します。これが可能であれば、標準ライブラリとサードパーティ図書館では、どんな混乱が起こるのか想像してみましょう。 – liori
@liori:素敵な追加!同じ変更されたインタプリタの下であなたのものと混ざっているサードパーティのコードを使用することはできません – jdi
jdiはPythonが何をしているのかだけでなく、なぜ私が何をしたいのかを説明してくれてありがとうございます。 –
あなたは、このようにそのメカニズムをごまかすことができます。すべての事業者が計算を行うが、いくつかのオブジェクトにラップ命令のリストを作成しないために
- オーバーライドを。
- 独自のブラケット演算子(つまり、
_
関数)を追加します。
例:
>>> a = MyNumber(5); b = MyNumber(2); c = MyNumber(3)
>>> a + b * c
MyExpression([MyNumber(5), '+', MyNumber(2), '*', MyNumber(3)])
ブラケット:_
だからあなたがprioritesを逆転場合
(オーダーあなたがそれに強制で)式を評価する関数である
>>> a + _(b * c)
に留意されたいです。あなたは得るでしょう:
>>> _(a + b * c)
MyNumber(21)
PS。 DjangoはQ
とF
の演算子で同様のトリックを行います。
- 1. 演算子の優先順位c#
- 2. ブール演算子の優先順位
- 3. どの論理演算子が優先順位を取るか
- 4. JavaScriptの演算子の優先順位の技術
- 5. Javaの演算子の優先順位式の評価
- 6. C言語での演算子の優先順位
- 7. Rubyの演算子の優先順位表
- 8. Perl5の=(等しい)演算子の優先順位
- 9. Cでの演算子の優先順位
- 10. Zend Frameworkの選択演算子の優先順位
- 11. PHP演算子の優先順位のバグ?
- 12. 複数のブール条件 - 演算子の優先順位
- 13. JavaのREGEX演算子の優先順位
- 14. ラムダ微積分演算子の優先順位
- 15. 違い:演算子の優先順位と短絡が
- 16. オーバーロードされたキャスト演算子の優先順位
- 17. 演算子の優先順位と結合性
- 18. 演算子優先順位(boolより前のvoid *)
- 19. ハスケルの優先順位:ラムダと演算子
- 20. Menhir/Ocamlyaccの演算子の動的優先順位と優先順位の指定
- 21. Visual Basic 6.0の演算子の優先順位は何ですか?
- 22. 演算子の優先順位規則を持つPerl 6文法の例
- 23. Yii複数のAND/ORを持つ条件 - 演算子の優先順位
- 24. javascrtiptで演算子の優先順位が&&と==に関係しますか?
- 25. ifortを使用した指数のFortran演算子優先順位エラー
- 26. コンパイラでの演算の優先順位と結合性
- 27. CFG演算の優先順位/あいまいさ
- 28. 優先順位キューの優先順位を変更して、要素の順序を維持する
- 29. 乗除算の優先順位
- 30. ナンシービット演算子の優先度?
いいえ、それはPython言語自体の一部です。どのように言語が解析されるか – jdi
@jdiそれは答えです、それを一つにしてみませんか? – kojiro
@kojiro:正式なpythonのドキュメントへのリンクを見つけることができないので、それは変更できません。私はそれを述べているサードパーティのリンクのトンを見つけた。 – jdi