Python中直接查看对象值和使用print()输出的区别

直接用代码来描述这个问题的现象:

>>> x = r'C:\windows\notepad.exe'

>>> x

'C:\\windows\\notepad.exe'

>>> print(x)

C:\windows\notepad.exe

>>> x = '''Tom said, "Let's go."'''

>>> x

'Tom said, "Let\'s go."'

>>> print(x)

Tom said, "Let's go."

仔细看的话会注意到,直接查看字符串x的值,和使用print(x)来输出字符串的值,得到的结果略有不同。原因在哪里呢?这要从Python类的特殊方法说起,在Python类中有两个特殊方法__str__()和__repr__(),前者在使用print()查看对象值时会自动调用,而后者则在直接查看对象值时自动调用。下面的代码说明了这两个特殊方法的用法,这样也就能明白上面代码运行结果了。

>>> class T:

def __str__(self):

return '3'

def __repr__(self):

return '5'

>>> t = T()

>>> t

5

>>> print(t)

3

补充:在Python内置类型中,特殊方法__repr__()和__str__()的解释如下:

__repr__(self, /)

Return repr(self).

__str__(self, /)

Return str(self).

而对于内置函数repr()的解释如下:

>>> help(repr)

Help on built-in function repr in module builtins:

repr(obj, /)

Return the canonical string representation of the object.

For many object types, including most builtins, eval(repr(obj)) == obj.

本文分享自微信公众号 - Python小屋(Python_xiaowu)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-02-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏抠抠空间

re模块(正则表达式)

一、什么是正则表达式 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法。或者说:正则就是用来描述一类事物的规则。(在Pyt...

33560
来自专栏深度学习自然语言处理

为什么要使用向量化?

简单的矩阵乘法理论 其实大概每个人都知道向量化后进行计算的速度比循环求解计算快,可是快多少,我们还是不太清楚。那么我就想简单的说下理论再上代码(pyth...

33260
来自专栏鹅厂优文

Python 工匠:善用变量来改善代码质量

我一直觉得编程某种意义上是一门『手艺』,因为优雅而高效的代码,就如同完美的手工艺品一样让人赏心悦目。

1K100
来自专栏计算机视觉

为stackGan一个工程创建一个虚拟环境,python 2.7 tensorflow0.12-tensorflow 1.01

安装conda 下载地址:https://repo.continuum.io/miniconda/Miniconda2-latest-Linux-x86_64...

389100
来自专栏机器学习算法与理论

从python2到python3

从Python2到Python3需要进行一定的转换,我们知道python版本更新后部分数据结构和语法有了少许的差别,这里简单列出几个,后续会进行更新: 1、pr...

37180
来自专栏超智能体

YJango:TensorFlow中层API Datasets+TFRecord的数据导入

2. 对接性:TensorFlow中也加入了高级API (Estimator、Experiment,Dataset)帮助建立网络,和Keras等库不一样的是:这...

1.2K230
来自专栏深度学习自然语言处理

简单maxPooling单层网络句子分类框架和数学理论

为了完成我的基于深度学习的立场检测系统毕业论文,我会从最简单的Pooling单层网络开始系统学习句子分类。接下来会有卷积神经网络CNN层,循环神经网络R...

350110
来自专栏计算机视觉

stackGan实验

你得把该下载的下载好,StackGan-master 然后unzip StackGAN-master.zip 里面有一个文件夹是Data,在这个文件里下载文...

32260
来自专栏计算机视觉

Python 函数使用记录,join函数和os.path.join用法

1.join()函数 语法:‘sep’.join(seq) 参数说明: sep:分隔符。可以为空 seq:要连接的元素序列、字符串、元组、字典等 上面的语法即:...

489120
来自专栏计算机视觉

Python 函数使用记录,join函数和os.path.join用法

1.join()函数 语法:‘sep’.join(seq) 参数说明: sep:分隔符。可以为空 seq:要连接的元素序列、字符串、元组、字典等 上面的语法即:...

30970

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励