1

私はpythonを学んでいますが、ここに私が得ることができない1つのコードがあります:

text = 'zip is very zipped'
print text.find('zip', text.find('zip') + 1)

今、私はこれが達成の近道であることを知っています:

text = 'zip is very zipped'
occur_once = text.find('zip')
print text.find('zip', occur_once + 1)

私は疑問に思っていました

print text.find('zip', text.find('zip') + 1)

動作し、Python はこれらの式をどの順序で評価しますか? この種の実行の「順序」に名前はありますか?

4

3 に答える 3

4

Python は厳密な (eager) 評価戦略を使用します。関数への引数は、関数が適用される前に常に完全に評価されます。評価順序左から右です(割り当てを評価する場合を除く)。

属性ルックアップに降りない:

  1. 評価text.findします (結果に F1 という名前を付けます)
  2. 評価'zip'→ A1
  3. 評価text.find→ F2
  4. 評価'zip'→ A2
  5. 呼び出しF2.__call__(A2)ます (戻り値を R1 と呼びます) ( text.find('zip'))
  6. 評価1→ A3
  7. コールR1.__add__(A3)(R2 を返す) ( R1 + 1)
  8. 呼び出しF1.__call__(A1, R2)(最終結果を返す) ( text.find('zip', R2))
于 2013-03-27T22:33:06.020 に答える
2

Python は、関数呼び出しで引数を左から右に評価してから、関数自体を実行します。

一般的な評価順序は左から右です。

于 2013-03-27T22:30:11.700 に答える
1

これは、演算子の優先順位および評価順序と呼ばれます。式内では、演算子の優先順位が適用され、式ごとに評価順序が使用されます。

text.find()呼び出しは+、優先順位が高いため、加算演算子の前に来ます。

優先度が同じ演算子の場合、評価は左から右に進みます。関数呼び出しでは、各引数は個別の式であるため、これらは左から右に評価されます。

于 2013-03-28T20:30:58.933 に答える