2016-08-03 50 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>。对于内置模块,模块名称会被忽略。