所有通过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 "<stdin>", line 1, in <module>
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://blog.51cto.com/wangergui/2065268