Ping> - Iterators provide just one method, __next__(). Ping> - The built-in next() calls tp_iternext. For instances, Ping> tp_iternext calls __next__. Ping> - Objects wanting to be iterated over provide just one method, Ping> __iter__(). Some of these are containers, but not all. Ping> - The built-in iter(foo) calls tp_iter. For instances, Ping> tp_iter calls __iter__. Ping> - "for x in y" gets iter(y) and uses it as an iterator. Ping> - "for x from y" just uses y as the iterator. +1. Ping> - We have a nice clean division between containers and iterators. Ping> - When you see "for x in y" you know that y is a container. What if y is a file? You already said that files are not containers. Ping> - When you see "for x from y" you know that y is an iterator. Ping> - "for x in y" never destroys y. Ping> - "if x in y" never destroys y. What if y is a file? Ping> Other notes: Ping> - The file problem has a consistent solution. Instead of writing Ping> "for line in file" you write Ping> for line from file: Ping> print line Ping> Being forced to write "from" signals to you that the file is Ping> eaten up. There is no expectation that "for line from file" Ping> will work again. Ah. So you want to break "for line in file:", which works now? I'm still +1 as long as there is a transition scheme. Ping> My Not-So-Ideal Protocol Ping> ------------------------ Ping> All right. So new syntax may be hard to swallow. An alternative Ping> is to introduce an adapter that turns an iterator into something Ping> that "for" will accept -- that is, the opposite of iter(). Ping> - The built-in seq(it) returns x such that iter(x) yields it. Ping> Then instead of writing Ping> for x from it: Ping> you would write Ping> for x in seq(it): Ping> and the rest would be the same. The use of "seq" here is what Ping> would flag the fact that "it" will be destroyed. I prefer "for x from it: -- Andrew Koenig, ark@research.att.com, http://www.research.att.com/info/ark
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4