<div dir="ltr"><div><div><div><div><div><div><div><div><div><br></div>A common misconception in communicating Python is<br></div>that range() and even list() are "function calls".  That's <br></div><div>correct for range() in 2.x:<br><br>>>> type(range)<br><type 'builtin_function_or_method'><br><br></div><div>but has never been correct terminology regarding list().  <br></div><div><br>Example:<br><br>"""<br>From Chapter 9 of Inventing in Python:<br><br>The range() and list() Functions<br><br>When called with one argument, range() will return a range object of integers from 0 up to (but not including) the argument. This range object can be converted to the more familiar list data type with the list() function. Try entering list(range(10)) into the interactive shell:<br>"""<br><br></div>The author knows a range object is returned, however that's<br></div>our clue that range() is calling a type (a class) and returning<br></div>an instance of that class, ditto list( ).<br><br></div>I'd like to see the Python 3.x teaching literature not muddying<br></div>the waters by referring to range() and list() -- and zip() and <br></div>enumerate() -- as "function calls".<br><br></div>Kirby<br><br></div>