Hatena::Grouppython

yanbe.py このページをアンテナに追加 RSSフィード

2008-08-23

Pythonの組み込み関数iter()の用途について

11:09 | Pythonの組み込み関数iter()の用途について - yanbe.py を含むブックマーク はてなブックマーク - Pythonの組み込み関数iter()の用途について - yanbe.py Pythonの組み込み関数iter()の用途について - yanbe.py のブックマークコメント

私がこれに疑問を持つにいたった経緯はid:makimotoさんがまとめて下さってます.

まきもと (仮)

世の中的にこのiter()がどう使われているのかGoogle Code Searchに聞いてみました.

Error 404 (Not Found)!!1

意味があるなぁと思ったのは以下

Error 404 (Not Found)!!1

15  class BaseCursor(object):
16
17    """A base for Cursor classes. Useful attributes:
18
19    description -- DB API 7-tuple describing columns in last query
20    arraysize -- default number of rows fetchmany() will fetch
21
22    See the MySQL docs for more information."""

205    def __iter__(self):
206        return iter(self.fetchone, None)

MySQLdbモジュールを使ったことある人はなるほどと思ってもらえると思うのですが,fetchoneというクエリの結果から1行取り出す関数を再利用して,Pythoniteratorプロトコルに対応してます.これでMySQLdbを使う側はfetchone関数戻り値を気にせずにシンプルにfor in構文内で使えるわけですね.

220  class CursorStoreResultMixIn(object):
221
222    """This is a MixIn class which causes the entire result set to be
223    stored on the client side, i.e. it uses mysql_store_result(). If the
224    result set can be very large, consider adding a LIMIT clause to your
225    query, or using CursorUseResultMixIn instead."""

282    def __iter__(self):
283        self._check_executed()
284        result = self.rownumber and self._rows[self.rownumber:] or self._rows
285        return iter(result)

どういう形式でクエリの結果を取得するにしても,内部表現に関わらず呼び出し側では.next()も使えるように,こうやってインターフェースを統一しているみたいです.

自分なりのまとめ

iter()関数は,クラスやモジュールの内部表現や手続きの違いを吸収して,それらの利用側に対して統一されたイテレータインタフェースを提供するのに使える.

KaleaKalea2011/07/27 03:35In awe of that ansewr! Really cool!

efjsggbsjfefjsggbsjf2011/07/27 21:09LED43h <a href="http://rtfabfqqhqck.com/">rtfabfqqhqck</a>

xrlnmwpxrlnmwp2011/07/28 22:285FqJJ7 , [url=http://vhypibwenwrg.com/]vhypibwenwrg[/url], [link=http://tjaatfhdtvpe.com/]tjaatfhdtvpe[/link], http://qyldrzmcewtt.com/

zlgbgyzlgbgy2011/07/29 21:39mO08I6 <a href="http://uowyttqnalqj.com/">uowyttqnalqj</a>

wxxktinywxxktiny2011/07/31 00:42uNfCUO , [url=http://wxqckpcigfsl.com/]wxqckpcigfsl[/url], [link=http://djjbubmuscax.com/]djjbubmuscax[/link], http://mjgcjtplohhh.com/

トラックバック - http://python.g.hatena.ne.jp/y_yanbe/20080823