On Fri, Feb 10, 2017 at 07:34:35PM -0600, boB Stepp wrote: > I was playing around with type() tonight. If I type (pun intended), I get: > > py3: type(5) > <class 'int'> > > So I naively thought a test for type int should go like: > > py3: type(5) == "<class 'int'>" > False
The interactive intepreter is great, but you have to remember that what you see is not necessarily what you've got. What you *see* is the string representation of the object: py> print <built-in function print> but what you've actually got is the object itself; in this case, it is the print function, and in your case, it is the int class. Generally angle brackets < > mean that the text between the brackets is just a display form, something intended for the human reader, and not a programmable syntax. You then have to know (from experience) how to refer to the object in code. In the case of int, there are three distinct things here: - the class (or type) itself, a blob of memory somewhere in the interpreter containing various methods and attributes used for working with integers; - the name the interpreter knows that class by, namely "int"; - the string representation for the human reader, "<class 'int'>". So long as you remember the difference between the object itself, the name we use to talk about the object, and the way we visually display the object, you can't go wrong :-) (The nation Russia is not the same as a map of Russia, which is not the same as the word Russia, which is not the same as the letters R u s s i a, or even Р о с с и ́я for that matter). As they say: the map is not the territory. Or in the words of Steven Wright, "I have a map of the United States... Actual size. It says, 'Scale: 1 mile = 1 mile.' I spent last summer folding it." > I finally stumbled onto the correct form: > > py3: type(5) == int > True type(5) returns the class that we call "int". The name "int" returns that same class. > So my question is why does "type(5)" result in "<class 'int'>", No, that's just the string representation of int. Inside the interactive interpreter, when you hit ENTER, the interpreter evaluates the line of code you have, generates a result, and then does the equivalent of: print(repr(result)) (except that None is suppressed). -- Steve _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor