0
我一直認爲Jupyter只是打印出一個對象的repr
,但事實並非如此。Jupyter筆記本評估過程中會發生什麼?
這裏是一個例子。如果我在筆記本中評估這一點:
obj = type(2)
obj
我剛剛收到:int
。
如果我這樣做,而不是
print(obj)
我得到:<class 'int'>
。
那麼:什麼是Python指令來模擬筆記本在評估變量時所做的工作?
我一直認爲Jupyter只是打印出一個對象的repr
,但事實並非如此。Jupyter筆記本評估過程中會發生什麼?
這裏是一個例子。如果我在筆記本中評估這一點:
obj = type(2)
obj
我剛剛收到:int
。
如果我這樣做,而不是
print(obj)
我得到:<class 'int'>
。
那麼:什麼是Python指令來模擬筆記本在評估變量時所做的工作?
Jupyter/IPython使用相當複雜的pretty printer。關於你的int
的例子,它有printer for classes/type。
基本上它是通過cls.__qualname__
(PY 3)或cls.__name__
(PY2 & 3),並通過cls.__module__
模塊獲取類的名字,並將它們打印爲<module.name>
。對於內置模塊,模塊名稱會被忽略。
你知道Jupyter是開源的,對不對? –
這與評估變量無關,它只是關於*表示變量。如果您的問題是關於如何複製表示,您應該查看Jupyter如何實現它,或者指定您需要的表示方式 - 例如具有由他們的類名稱表示的類型。 – MisterMiyagi
也許這樣? http://stackoverflow.com/questions/1436703/difference-between-str-and-repr-in-python –