Python 对象打印两种不同类型的格式化输出。为什么?

Python 对象打印两种不同类型的格式化输出。为什么?,python,pandas,numpy,dataframe,Python,Pandas,Numpy,Dataframe,我不知道是否应该称之为一件小事,但它一直困扰着我。numpy.dtype打印不同格式的输出,一个不带打印语句,另一个带打印语句。以下是一个例子: train = pd.read_csv("train.csv") In [10]: train.dtypes Out[10]: first_active_month object card_id object feature_1 int64 feature_2

我不知道是否应该称之为一件小事,但它一直困扰着我。numpy.dtype打印不同格式的输出,一个不带打印语句,另一个带打印语句。以下是一个例子:

train = pd.read_csv("train.csv")
In [10]: train.dtypes
Out[10]:
first_active_month     object
card_id                object
feature_1               int64
feature_2               int64
feature_3               int64
target                float64
dtype: object

In [5]: train['card_id'].dtypes
Out[5]: dtype('O')

In [11]: print(train['card_id'].dtypes)
object
请查看最后两个命令的输出。当不使用“print”语句打印时,输出为“dtype('O');当使用“print”语句打印时,输出为“object”

我已经阅读了numpy.dtype手册,但找不到这两种不同输出格式的原因。此外,还开展了以下工作:

In [16]: train['card_id'].dtypes in ['object']
Out[16]: True

如果我能知道原因,我将不胜感激。

它们是相同的东西,具有同等性。只是print()的解析是唯一的

dtype('O')=python对象


它们是相同的东西,具有等价性。只是print()的解析是唯一的

dtype('O')=python对象


在REPL中计算表达式时,它会打印对象的
repr
。当您使用
print
函数时,它首先尝试对象的
str
,即定义类型的类的
\uuu repr\uuu
\uu str\uu
对应的方法

所以试试看

print(repr(train['card_id'].dtypes))
print(str(train['card_id'].dtypes))

在REPL中计算表达式时,它会打印对象的
repr
。当您使用
print
函数时,它首先尝试对象的
str
,即定义类型的类的
\uuu repr\uuu
\uu str\uu
对应的方法

所以试试看

print(repr(train['card_id'].dtypes))
print(str(train['card_id'].dtypes))

我认为你是对的。当我在命令行上写入'train['card_id'].dtypes.name'时,输出为'object'。这意味着“print”语句正在打印dytpe对象的“name”属性。print语句的这种行为是否总是正确的,即只打印出对象的name属性,如果它存在的话?我想你是对的。当我在命令行上写入'train['card_id'].dtypes.name'时,输出为'object'。这意味着“print”语句正在打印dytpe对象的“name”属性。print语句的这种行为是否总是正确的,即只打印出对象的name属性(如果存在)?