gpt4 book ai didi

python - 理解 Python 中的 repr() 函数

转载 作者:IT老高 更新时间:2023-10-28 12:30:11 31 4
gpt4 key购买 nike

repr():对象的可评估字符串表示(可以“eval()”它,这意味着它是一个字符串表示形式,计算结果为 Python对象)

换句话说:

>>> x = 'foo'
>>> repr(x)
"'foo'"

问题:

  1. 为什么我在执行 repr(x) 时会得到双引号? (我不明白他们当我做 str(x))
  2. 为什么我在执行 eval("'foo'") 时得到 'foo' 而不是 x对象?

最佳答案

>>> x = 'foo'
>>> x
'foo'

所以名称 x 附加到 'foo' 字符串。例如,当您调用 repr(x) 时,解释器会放置 'foo' 而不是 x 然后调用 repr('foo' ).

>>> repr(x)
"'foo'"
>>> x.__repr__()
"'foo'"

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

>>> eval("'foo'")
'foo'

当我们调用 eval("'foo'") 时,和我们在解释器中输入 'foo' 是一样的。就像我们直接在解释器中输入外层字符串""的内容。

>>> eval('foo')

Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
eval('foo')
File "<string>", line 1, in <module>
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'

关于python - 理解 Python 中的 repr() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7784148/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com