所有通过 Python 打印的字符串还是被引号括起来的.这是因为 Python 打印值的时候会保持该值在 Python 代码中的状态,而不是你希望用户看到的状态,如果使用 print 语句,结果就不一样了.
>>> "Hello,world"
'Hello,world' # Python 打印出来的值是给 python 理解的,这里 python 理解为字符串,所以带着引号
>>> print "Hello,world"
Hello,world
>>>
****************************************************************************************************************
>>> 10000L
10000L # python 理解为 Long 型的数字,所以它打印出来的时候也带着后缀 L
>>> print 10000L # 用户看到的当然是一个数字 1000,而不是字符串 1000L
10000
>>>
str 和 repr 实际就分别对应上述两种显示方式.
把值转换为合理形式的字符串,给用户看的.str 实际上类似于 int,long,是一种类型.
repr()
创建一个字符串,以合法 python 表达式的形式来表示值.repr() 是一个函数.
这里可以看到,长整型数 10000L 被转换成了数字 10000,而且在显示给用户的时候也是如此,当你想知道一个变量的值是多少时,可能会对它是整型还是长整型感兴趣.
值被转换为字符串的两种机制.可以通过以下两个函数来使用这两种机制:一种是通过 str 函数,它会把值转换为合理形式的字符串,以便用户可以理解;另一个是通过 repr 函数,它会创建一个字符串,以合法的 Python 表达式的形式来表示值.
请看如下示例:
>>> print repr("Hello,world")
'Hello,world'
>>> print repr(1000L)
1000L
>>> print str("Hello,world")
Hello,world
>>> print str(1000L)
1000
repr(x) 也可以写作 `x` 实现 (注意,` 是反引号,而不是单引号).如果希望打印一个包含数字的句子,那么反引号就很有用了.比如:
>>> temp = 42
>>> print "The temperature is" + temp
Traceback (most recent call last):
File "", line 1, in
TypeError: cannot concatenate 'str' and 'int' objects
>>> print "The temperature is" + `temp`
The temperature is 42
>>>
>>> print "The temperature is" + str(temp)
The temperature is 42
>>> print "The temperature is" + repr(temp)
The temperature is 42
>>>
第一个 print 语句并不工作,那是因为不可以将字符串和数字进行相加.而第二个则可以正常工作,以为已经通过反引号将 temp 的值转换成字符串 "42" 了.(当然也可以使用 repr, 得到相同的结果)
简而言之,str,repr 和反引号是将 Python 值转换为字符串的 3 种方法.函数 str 让字符串更容易阅读,而 repr(和反引号)则把结果字符串转换为合法的 Python 表达式.str 出来的值是给人看的字符串,repr 出来的值是给机器看的,括号中的任何内容出来后都是在它之上再加上一层引号.
来源: http://www.bubuko.com/infodetail-2475246.html