为什么在Python中,type(x)和print(type(x))的结果略有不同?

4

Let

x = [1,2,3]

然后在ipython中,我得到了以下结果。
> In [8]: type(x) 
Out[8]: list
> 
> In [9]: print(type(x)) 
<class 'list'>

为什么 print(type(x)) 不只打印列表,而是多了一些类的信息?

相关问题是,如何显示输出结果?

type of x is; list

print(' x的类型是: ', type(x)) 不能实现这个功能,因为它会得到额外的类信息,如下所示:

In [2]: print(' type of x is: ', type(x))
 type of x is:  <class 'list'>
4个回答

1

正如pwxcoo所说,这是Ipython为您完成的一些额外工作,在普通的Python shell中尝试它,除非您明确地print(),否则不会显示任何内容。


0

我测试了 type(x)。它总是输出 <class 'list'>。你直接得到 list 的原因是 IPython 为你做了额外的工作。

使用 type() 将返回类型对象。操作它并使用 __name__ 获取类型名称。

print(' type of x is: ', type(x).__name__)
#  type of x is: list

0

我肯定会按照pwxcoo展示的方式来做。在我知道__ name __是类型的属性之前,我是通过将类型转换为字符串并进行切片来完成的:

str(type(x)).split()[1][1:-2]

所以这是一个很好的提醒,你可以运行dir(type)并查看__name__是一个属性,因此你不必像我那样做丑陋的事情!


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接