iterable
pythonにおけるiterableは、__iter__をもつ
hasattr(myObj, '__iter__')
一方、iteratorは、__next__を持つ。
iterableを iteratorにしてしまうと、next()がどこの状態(つぎに何を処理するか、終わったか)かを管理しないといけない。
iteratorのが__next__あって、より機能リッチだけど、故に身動きが取れないときもある。
stopiterationなのに、for loop(next) してしまうとか。
In Python, how do I determine if an object is iterable? - Stack Overflow
回答で勉強になったのは、 
duck typing: try: iter(element)
type checking if instance(element, collection.Iterable)
duck typingは、実際にやってみてOKならOK.
type checkingは、文字通り、check手続き。python collections
おまけ
ロックのファイルのロックに関する基礎知識
「ロックディレクトリが無ければ」+「作成して」の部分を「ロックディレクトリをまず作ってみて作成できたら」に変更しています
に似てる。
[