1.str()与repr()的区别
在python中,str()与repr()都可以使实现类型的转换,而我们最常用的是str(),什么时候repr使用?
str():将值转化为适于人阅读的字符串的形式(给人看)
repr():将值转化为供解释器读取的字符串形式(给机器看)
将 float 转换成 str
float1 = 3.14
print('原型:', float1, type(float1))
# str()转换
str1 = str(float1)
print('str()转换:', str1, type(str1))
# repr()转换
repr1= repr(float1)
print('repr()转换:', repr1, type(repr1))
这里可以看出str与repr转换都是一样的
将str 转换成 str
str = '3.14'
print('原型:', str, '类型:', type(str), '长度:',len(str))
# repr()转换
repr1= repr(str)
print('repr()转换:', repr1, '类型:', type(repr1),'长度:', len(repr1))
# str()转换
str1 = str(str)
print('str()转换:', str1, '类型:', type(str1),'长度:', len(str1))
原来那个字符串是:3.14 长度是4,因为这是把‘’个隐藏了
而repr()转换是:‘3.14’,长度是6,这是在原来那个字符串的基础上再加了一对引号,类似于:“ ‘3.14’ ”这样。
而函数str()报错
str的转换:
repr转换
2.__str__与__repr__的区别
我们知道python中有一类特殊的方法,叫做魔法方法。
- 方法定义的实收以两个下划线开头和两个下划线结尾。
- 一般不需要我们手动调用,在满足某一个条件的时候自动调用
然而,其中的__str__和__repr__都是用来描述对象的信息,那为什么要定义这两个方法呢?
__ str __:面向于人,注重可读性
__ repr __:面向于机器,注重准确性
实例
__ str__ 实例
class A(object):
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f'name:{self.name},age:{self.age}'
my_list = [A('张三', 8), A('李四', 9)]
print(my_list)
__ repr __:实例
class A(object):
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f'name:{self.name},age:{self.age}'
my_list = [A('张三', 8), A('李四', 9)]
print(my_list)
通过简单的对⽐,我们发现,直接输出对象,调⽤的__repr__ ⽅法。
另外还需要注意的是,如果将对象放在容器中进⾏输出,调⽤的是__repr__ ⽅法。
总结
Python 中的 str 和 repr ⽅法都是⽤来显示的,即描述对象信息的。
如果重写__str__ ⽅法,也重写了 repr ⽅法时,则默认调⽤ __repr__⽅法。