2016-08-03 10 views
0

Ich habe immer gedacht, dass Jupyter einfach die repr eines Objekts ausgedruckt hat, aber das ist nicht der Fall.Was passiert bei einer Jupyter Notebook-Auswertung?

Hier ist ein Beispiel. Wenn ich dies in einem Notebook bewerten:

obj = type(2) 
obj 

bekomme ich nur: int.

Wenn ich stattdessen tun

print(obj) 

ich: <class 'int'>.

Also: Was ist die Python-Anweisung zu simulieren, was das Notebook während der Auswertung einer Variablen tut?

+0

Sie wissen, Jupyter ist Open-Source, oder? –

+0

Das hat nichts damit zu tun, die Variable zu bewerten, es geht nur um * die Variable * darzustellen. Wenn es bei Ihrer Frage darum geht, die Darstellung * zu replizieren, sollten Sie entweder nachschlagen, wie Jupyter sie implementiert, oder angeben, welche Art von Repräsentation Sie benötigen - z. Typen haben, die durch ihren Klassennamen repräsentiert werden. – MisterMiyagi

+0

Vielleicht das? http://stackoverflow.com/questions/1436703/difference-between-str-and-repr-in-python –

Antwort

1

Jupyter/IPython verwendet eine ziemlich komplexe pretty printer. In Bezug auf Ihr Beispiel int hat es eine printer for classes/type.

Im Grunde, was es tut, ist es die Klasse Name über cls.__qualname__ (py3) oder cls.__name__ (py2 & 3) und dem Modul über cls.__module__ wird, und druckt sie als <module.name>. Bei Built-Ins wird der Modulname still ignoriert.

Verwandte Themen