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 –