在Python中,您可以在不打印变量的情况下查看该变量的值,例如:
>>> a = 'hello world'
>>> a
hello world这与打印print(a)不同,但我仍然能够看到类似的输出。这种可变印刷的技术术语是什么?
作为区别的一个例子,下面展示了Jupyter Notebook如何为这两种类型的打印打印数据帧:

发布于 2019-11-17 04:50:26
您在REPL中执行代码;P代表“打印”。
它是由控制台隐式打印的。
发布于 2019-11-17 04:51:41
您看到的不是Python,而是Python shell的(空闲)行为。按照它的构建方式,它会打印出您指定的项的类型或值。实际的Python将在.py文件中包含以下代码:
a = 'hello world'
a如果执行python test.py,则什么也看不到,因为a返回的值将被自动丢弃。cli的工作方式就像那里有一个隐式的print()语句。
发布于 2019-11-17 05:18:25
您看到的是解释器在交互模式下返回到全局名称空间的最后一个表达式的repr。这与a打印输出有本质上的不同,尽管它们确实转到同一个流。
对于像整数这样的简单对象,它们看起来是一样的。
>>> x = 1
>>> print(x)
1
>>> x
1不同之处在于,print将对象的字符串表示形式发送到STDOUT。输入一个变量并按enter将显示该对象的repr。对我来说,最大的区别是后者可以通过向表达式添加赋值来轻松捕获,即y = x。而print输出则更难以捕获。
这就是为什么我使用短语“返回x的值”或“返回x”。这表明,如果您希望将返回捕获为另一个变量,则可以这样做。
下面是一个简短的例子来说明print和repr之间的区别。
>>> class Foo:
... def __repr__(self):
... return f'<Foo at 0x{id(self):x}>'
... def __str__(self):
... return 'Foo-object'
...
>>> f = Foo()
>>> print(f)
Foo-object
>>> f
<Foo at 0x17416af3c18>https://stackoverflow.com/questions/58895060
复制相似问题