2016-08-03 1 views
-2

私のような文遅延評価によるものだと思う:Pythonインタプリタが最適化できるものはどれですか?

if True and True (...): 
    # do something 

は...右のPythonインタプリタによってTrue and部分の後にスキップする必要があります。しかし、コンパイルされたコードとは対照的に、私はPythonインタプリタが最適化できないと思います悪いスタイルは明示的なブール比較のようですね。

if condition == True: 
    # do something 

コンパイラはこれを最適化し、== True部分を削除しますが、通訳は常には、このように== Trueの不要な比較コードが実行されるたびにやって、condition ==一部の後に待っている文を評価することがあるでしょう!

インタプリタがコードを最適化できないような落とし穴が多くありますか?私はこの最後の質問がかなり開いていることを知っていますが、私はいくつかの人気のある例が存在すると思いますか?

+5

'if condition'と' if condition == True'がPythonで実際に同等だった場合、ピープル・オプティマイザが一方を他方に変換するのはかなり簡単です。これらのコードスニペットは同等ではないため、このような変換は実行されません。一つのこととして、あなたがCでそれを試してみると、まったく同じ問題が発生します。 「真」に等しくない値はたくさんあります。 – user2357112

+0

どの値が「True」に等しくないと考えられますか?私はC/C++、Java、...、 '== True'のような言語では最適化されると思っていました。 – daniel451

+3

@ascenator 'if 2 == True:...' vs 'if 2:...' –

答えて

関連する問題