Python 有办法将任意值转为字符串:将它传入repr() 或str() 函数。
函数str() 用于将值转化为适于人阅读的形式,而repr() 转化为供解释器读取的形式。
repr()函数得到的字符串通常可以用来重新获得该对象,repr()的输入对python比较友好。通常情况下obj==eval(repr(obj))这个等式是成立的。
函数str() 用于将值转化为适于人阅读的形式,而repr() 转化为供解释器读取的形式。
repr()函数得到的字符串通常可以用来重新获得该对象,repr()的输入对python比较友好。通常情况下obj==eval(repr(obj))这个等式是成立的。
print('asd' == eval(repr('asd'))) # True 而str()函数这没有这个功能
>>>repr([0,1,2,3])
'[0,1,2,3]'
>>> repr('Hello')
"'Hello'"
>>> str(1.0/7.0)
'0.142857142857'
>>> repr(1.0/7.0)
'0.14285714285714285'
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
class Person(object):
def __init__(self, name, gender):
self.name = name
self.gender = gender
def __str__(self):
return '(__str__: %s, %s)' % (self.name, self.gender)
def __repr__(self):
return '(__repr__: %r, %r)' % (self.name, self.gender)
p = Person('lh','male')
print(p) # (__str__: lh, male)
print(p.__str__()) # (__str__: lh, male)
print(p.__repr__()) # (__repr__: 'lh', 'male')
# %s => str(),比较智能;
# %r => repr(),处理较为简单和直接;
print("%s" %p) # (__str__: lh, male)
print("%r" %p) # (__repr__: 'lh', 'male')