summaryrefslogtreecommitdiff
path: root/Lib/dis.py
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2001-04-20 19:13:02 +0000
committerGuido van Rossum <guido@python.org>2001-04-20 19:13:02 +0000
commitb934d7170094f9710e0176ead4855fea342a362b (patch)
tree4903ce786a355fac7a6c46c6552ccb113c1d25cc /Lib/dis.py
parent85512b0abedd85dec25a03f5270a8a4e24b3269d (diff)
downloadcpython-b934d7170094f9710e0176ead4855fea342a362b.tar.gz
Iterators phase 1. This comprises:
new slot tp_iter in type object, plus new flag Py_TPFLAGS_HAVE_ITER new C API PyObject_GetIter(), calls tp_iter new builtin iter(), with two forms: iter(obj), and iter(function, sentinel) new internal object types iterobject and calliterobject new exception StopIteration new opcodes for "for" loops, GET_ITER and FOR_ITER (also supported by dis.py) new magic number for .pyc files new special method for instances: __iter__() returns an iterator iteration over dictionaries: "for x in dict" iterates over the keys iteration over files: "for x in file" iterates over lines TODO: documentation test suite decide whether to use a different way to spell iter(function, sentinal) decide whether "for key in dict" is a good idea use iterators in map/filter/reduce, min/max, and elsewhere (in/not in?) speed tuning (make next() a slot tp_next???)
Diffstat (limited to 'Lib/dis.py')
-rw-r--r--Lib/dis.py2
1 files changed, 2 insertions, 0 deletions
diff --git a/Lib/dis.py b/Lib/dis.py
index dc3025721f..fb9736983c 100644
--- a/Lib/dis.py
+++ b/Lib/dis.py
@@ -205,6 +205,7 @@ def_op('BINARY_AND', 64)
def_op('BINARY_XOR', 65)
def_op('BINARY_OR', 66)
def_op('INPLACE_POWER', 67)
+def_op('GET_ITER', 68)
def_op('PRINT_EXPR', 70)
def_op('PRINT_ITEM', 71)
@@ -232,6 +233,7 @@ HAVE_ARGUMENT = 90 # Opcodes from here have an argument:
name_op('STORE_NAME', 90) # Index in name list
name_op('DELETE_NAME', 91) # ""
def_op('UNPACK_SEQUENCE', 92) # Number of tuple items
+def_op('FOR_ITER', 93)
name_op('STORE_ATTR', 95) # Index in name list
name_op('DELETE_ATTR', 96) # ""