2016-08-03 38 views
0

我一直認爲Jupyter只是打印出一個對象的repr,但事實並非如此。Jupyter筆記本評估過程中會發生什麼?

這裏是一個例子。如果我在筆記本中評估這一點:

obj = type(2) 
obj 

我剛剛收到:int

如果我這樣做,而不是

print(obj) 

我得到:<class 'int'>

那麼:什麼是Python指令來模擬筆記本在評估變量時所做的工作?

+0

你知道Jupyter是開源的,對不對? –

+0

這與評估變量無關,它只是關於*表示變量。如果您的問題是關於如何複製表示,您應該查看Jupyter如何實現它,或者指定您需要的表示方式 - 例如具有由他們的類名稱表示的類型。 – MisterMiyagi

+0

也許這樣? http://stackoverflow.com/questions/1436703/difference-between-str-and-repr-in-python –

回答

1

Jupyter/IPython使用相當複雜的pretty printer。關於你的int的例子,它有printer for classes/type

基本上它是通過cls.__qualname__(PY 3)或cls.__name__(PY2 & 3),並通過cls.__module__模塊獲取類的名字,並將它們打印爲<module.name>。對於內置模塊,模塊名稱會被忽略。