repr():对象的可计算字符串表示形式(can"eval()"它,意味着它是一个字符串表示,计算结果是一个python对象)

换言之:

>>> x = 'foo'

>>> repr(x)

"'foo'"

问题:

为什么我做repr(x)时会得到双引号?(我不明白)当我这样做的时候

当我做eval("'foo'")时为什么要得到'foo',而不是x,那是对象?

您为1提供了一个非常好的实际/预期行为示例,但不为3提供。你"想看它"的方式是什么?

请详细说明3D问题。举个例子是个好主意。现在还不清楚你想要实现什么。

@我发布了一个新的问题。不知道原因,但我无法编辑此日志以输入实际代码。谢谢你帮助我。

@我去掉了第三个问题,做了一个全新的问题,其中也包括代码。

@ 0101AMT:Link?

>>> x = 'foo'

>>> x

'foo'

因此,名称x附加到'foo'字符串。例如,当您调用repr(x)时,解释器将'foo'替换为x,然后调用repr('foo')。

>>> repr(x)

"'foo'"

>>> x.__repr__()

"'foo'"

repr实际上调用了x的神奇方法__repr__,它给出了包含分配给x的值'foo'表示的字符串。因此,它返回字符串""中的'foo',导致"'foo'"。repr的思想是给出一个字符串,该字符串包含一系列符号,我们可以在解释器中键入这些符号,并获得作为参数发送给repr的相同值。

>>> eval("'foo'")

'foo'

当我们调用eval("'foo'")时,它与我们在解释器中键入'foo'相同。就像我们在解释器中直接键入外部字符串""的内容一样。

>>> eval('foo')

Traceback (most recent call last):

File"", line 1, in

eval('foo')

File"", line 1, in

NameError: name 'foo' is not defined

如果我们称之为eval('foo'),它与我们在解释器中键入foo相同。但是没有可用的foo变量,因此引发了异常。

>>> str(x)

'foo'

>>> x.__str__()

'foo'

>>>

str只是对象的字符串表示(记住,x变量引用'foo',所以这个函数返回字符串。

>>> str(5)

'5'

整数5的字符串表示为'5'。

>>> str('foo')

'foo'

字符串'foo'的字符串表示与字符串'foo'相同。

您在交互式解释器上得到的反馈也使用repr。当您输入一个表达式(让它为expr)时,解释器基本上执行result = expr; if result is not None: print repr(result)。因此,示例中的第二行是将字符串foo格式化为所需的表示形式('foo')。然后,解释器创建了repr表示,给您留下了双引号。

Why when I combine %r with double-quote and single quote escapes and print them out, it prints it the way I'd write it in my .py file but not the way I'd like to see it?

我不知道你在问什么。文本single ' and double" quotes在遍历repr时,包括一种引用的转义。当然可以,否则它就不是python规则中的有效字符串了。这正是你打电话给repr所要求的。

还要注意的是,eval(repr(x)) == x的类比并不是字面上的。这是一个近似值,对大多数人(全部?)都适用。内置类型,但最主要的是,通过查看repr输出,您对类型和逻辑"值"有了相当好的了解。

最初,它实际上是字面意义上的:每个值的repr要么是可以传递给eval(或者复制并粘贴到源代码中)以产生相等的值的东西,要么是在尝试时会引起语法错误的东西(通常是object.__repr__生成的样式)。随着时间的推移,这种情况逐渐减弱,到了2.7和3.x,这对许多类型来说都是正确的,甚至在stdlib中也有例外(例如,作为本地创建的namedtuple类型将给您一个repr,您不能使用eval,但这是最初的想法。

1)repr('foo')的结果是字符串'foo'的结果。在python shell中,表达式的结果也被表示为一种表示,因此您实际上看到的是repr(repr('foo'))。

2)eval计算表达式的结果。结果总是一个值(如数字、字符串或对象)。多个变量可以引用相同的值,如:

x = 'foo'

y = x

x和y现在指的是相同的值。

3)我不知道你在这里是什么意思。你能举个例子吗?你想看什么?

str()用于为最终用户创建输出,repr()用于调试开发,它代表对象的官方。

例子:

>>> import datetime

>>> today = datetime.datetime.now()

>>> str(today)

'2018-04-08 18:00:15.178404'

>>> repr(today)

'datetime.datetime(2018, 4, 8, 18, 3, 21, 167886)'

从输出中我们看到repr()显示了日期对象的官方表示。

当你说

foo = 'bar'

baz(foo)

您没有将foo传递给baz函数。foo只是用来表示一个值的名称,在本例中,'bar'是用来表示一个值的,这个值被传递给baz函数。

python中的repr_了解python中的repr()函数相关推荐

  1. python中repr_关于python的str()和repr()函数

    笔者学习python(2.7.3),对于srt()和repr()函数有些混淆,仔细研究了一下,以下是一点心得. 1.str()函数 str()返回一个字符串,是对象的可打印的显示.字符串就返回本身.& ...

  2. python中str和repr_关于Python中repr和str用法的区别?

    我们在用Python的时候,有时候会发现在交互模式下直接输入一个变量跟输入print(变量)打印出来的东西是不一样的. 还有时候,我们打印一个对象,得到的不是我们想要的它的值,而是一个内存地址. 这些 ...

  3. python __repr__用法_python中str和repr_关于Python中repr和str用法的区别?

    我们在用Python的时候,有时候会发现在交互模式下直接输入一个变量跟输入print(变量)打印出来的东西是不一样的. 还有时候,我们打印一个对象,得到的不是我们想要的它的值,而是一个内存地址. 这些 ...

  4. Python分析离散心率信号(中)

    Python分析离散心率信号(中) 一些理论和背景 心率信号不仅包含有关心脏的信息,还包含有关呼吸,短期血压调节,体温调节和荷尔蒙血压调节(长期)的信息.也(尽管不总是始终如一)与精神努力相关联,这并 ...

  5. 使用Python,OpenCV从静态背景中提取移动前景

    使用Python,OpenCV从静态背景中提取移动前景 1. 效果图 2. 原理 3. 源码 参考 这篇博客将介绍OpenCV中的背景减法方法--即从静态背景中提取移动前景.在许多基于视觉的应用中,背 ...

  6. python廖雪峰_【Python】python中实现多进程与多线程

    进程与线程 进程(process)就是任务,是计算机系统进行资源分配和调度的基本单位[1].比如,打开一个word文件就是启动了一个word进程. 线程(thread)是进程内的子任务.比如word中 ...

  7. OpenCV中图像以Mat类型保存时各通道数据在内存中的组织形式及python代码访问各通道数据的简要方式...

    OpenCV中图像以Mat类型保存时各通道数据在内存中的组织形式及python代码访问各通道数据的简要方式 以最简单的4 x 5三通道图像为例,其在内存中Mat类型的数据组织形式如下: 每一行的每一列 ...

  8. python创建列向量_关于Numpy中的行向量和列向量详解

    关于Numpy中的行向量和列向量详解 行向量 方式1 import numpy as np b=np.array([1,2,3]).reshape((1,-1)) print(b,b.shape) 结 ...

  9. python yield理解_对Python中Yield的理解

    看到下面这段程序的时候,有点不明白这个yield到底是个啥东西,看了网上很多的博客,大致理解了yield的含义,所以记录下来. 要说yield首先要说python中的生成器,那么什么是生成器? 假设有 ...

最新文章

  1. ssh协议是osi_TCP/IP协议和三次握手四次挥手
  2. 负载均衡算法-响应速度均衡
  3. Django-Migration admin.0001_initial is applied before its dependency accounts.0001_initial on....
  4. java---Socket编程出现的异常种类
  5. 深受程序员鄙视的外行语录,你都听过吗?
  6. P3803 【模板】多项式乘法(FFT)
  7. JS异步加载,JQ事件不被执行解决方法
  8. Gtk与Cuda混合编程
  9. JVM Specification 9th Edition (4) Chapter 3. Compiling for the Java Virtual Machine
  10. acfun json 弹幕 转换 bilibili xml 弹幕
  11. 【数学建模】CUMCM-2014A 嫦娥三号软着陆过程 避障阶段图像处理
  12. 支付宝芝麻认证接口-扫码方式(芝麻认证接口与之类似)
  13. 个推mastersecret_个推 服务端 SDK
  14. stm32 移植 FreeRTOS
  15. java实现md5签名算法
  16. 一键部署开箱即用的代理服务器,解决 SAP UI5 应用开发过程中访问远端 OData 服务的跨域问题试读版
  17. 云原生|kubernetes|kubeadm部署的集群的100年证书
  18. 为什么电脑计算机里没有桌面,为什么电脑开机后桌面上什么都没有?
  19. 《Head First HTML5 javascript》第9章 认识对象
  20. 【C语言】一文看懂指针和内存

热门文章

  1. 我国企业电子商务经营战略的探析
  2. excel文件下载处理两种方法
  3. (CSP2019模拟)DTOJ 4646. block
  4. 约瑟夫环问题--java
  5. JS学习-创建对象练习
  6. CEPH存储文件系统操作
  7. python keyerror解决_请教这里的大佬,关于 Python 爬虫的 keyerror 的问题
  8. Office课后总结
  9. PAT乙级 1018 锤子剪刀布
  10. 粘贴时,word如何去除原文中的格式