2016-07-19 14 views
-1

'any()'組み込み関数の評価シーケンスは保証されていますか?つまり、Python 'any()'ビルドイン関数の評価シーケンス

any([..., x, ... y, ...]) 

は、任意の「X」「Y」の前にリストされているため「Y」前の状態を「x」をチェックすると仮定しても安全である、ありますか?

'Is the shortcircuit behaviour of Python's any/all explicit?'に関する質問は「短絡動作」を扱うことに注意してください。評価シーケンスを扱っていません!

提案された声明の証拠/参考資料を提供してください。

+1

[はい...](http://stackoverflow.com/a/14866380/2011147) – Selcuk

+0

@Selcukこれは必ずしも重複しているとは思わない。短絡とは、最初に「真」値に達した時点で評価を停止することであり、それまで評価された順序ではありません。 – DeepSpace

+0

@DeepSpace私はそれを重複としてマークしませんでしたが、リンクされた答えは、リスト要素が順番に評価されることを示唆する実際のマージへのリンクを持っています。 – Selcuk

答えて

0

iterable自体によって異なります。それが注文された場合(すなわちリスト)、はい。

注文されていない場合(つまり辞書でない場合)、そうでない場合。

最初にTrue -ishの値に達すると評価が停止することが保証されます。

+0

あなたが言っていることの証拠は何ですか? –

+0

1. 'any'と' all'は繰り返し可能な '__iter__'メソッドを呼び出すだけで、次の要素を取得します(クラスを作成し、要素を出力する前に' __iter__'をオーバーライドします)。 2.私の答えの2番目の部分については、あなたの質問が重複しているとマークされている質問に対する回答を読むことができます。 – DeepSpace

+0

実装へのピンポイント指定は、「保証された」動作と同じではありません。誰かがこのスキームに従わないPython実装を思いついた場合、それに依存するコードはすべて破損します。私は正しい答えがあると思います:それはドキュメントに記載されていないので、保証することはできません。 –