Python !r在str()和repr()中的作用
在本文中,我们将介绍Python中的!r在str()和repr()函数中的作用。!r是一种格式化字符串的方法,它的作用是将一个对象转换为其表示的字符串形式,并保留对象本身的表达方式。
阅读更多:Python 教程
什么是str()和repr()函数?
在介绍!r在str()和repr()中的作用之前,我们先来了解一下str()和repr()函数。这两个函数都是Python内置的用于转换对象为字符串的函数。
- str()函数将对象转换为人类可读的字符串形式。它的返回值通常是给用户显示出来的,以便于直观地理解对象的内容。
-
repr()函数将对象转换为解释器可理解的字符串形式。它的返回值通常是给开发人员使用的,用于调试和诊断。
下面我们将通过示例来说明!r在str()和repr()中的作用。
!r在str()中的作用
!r在str()函数中的作用是将一个对象转换为其对应的repr()字符串形式。这意味着无论对象本身是什么类型,str()函数都会返回一个包含了对象的类型和值的字符串。
示例1:
class Person:
def __init__(self, name):
self.name = name
def __str__(self):
return f'Person(name={self.name})'
def __repr__(self):
return f'Person(name={self.name!r})'
p = Person('Alice')
print(str(p)) # 输出:Person(name=Alice)
print(repr(p)) # 输出:Person(name='Alice')
在这个示例中,我们定义了一个Person类,它有一个name属性。我们重写了类的str()和repr()方法,分别返回了一个包含了对象属性值的字符串和一个包含了对象属性值和类型的字符串。
在str()函数中,我们可以看到!r的作用。通过使用!r,在str()中也保留了对象属性值的引号,与repr()的输出结果一致。
!r在repr()中的作用
!r在repr()函数中的作用是将一个对象转换为其对应的字符串形式,并保留了对象本身的表达方式。这就意味着无论对象本身是什么类型,repr()函数都会返回一个可以用来重建对象的字符串。
示例2:
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __repr__(self):
return f'Point({self.x!r}, {self.y!r})'
p = Point(1, 2)
print(repr(p)) # 输出:Point(1, 2)
在这个示例中,我们定义了一个Point类,它有两个x和y属性。我们重写了类的repr()方法,返回一个包含了对象属性值和类型的字符串。
在repr()函数中,我们可以看到!r的作用。通过使用!r,我们可以确保返回的字符串可以用来重建相同的对象。
总结
在本文中,我们介绍了Python中的!r在str()和repr()函数中的作用。
- 在str()函数中,!r用于将一个对象转换为其对应的repr()字符串形式,保留了对象属性值的引号。
- 在repr()函数中,!r用于将一个对象转换为其对应的字符串形式,并保留了对象本身的表达方式,可以用来重建对象。
掌握了!r在str()和repr()中的作用,我们可以更好地理解和使用这两个字符串转换函数。无论是在开发过程中的调试,还是在代码输出中的显示,都可以选择合适的函数和格式来满足自己的需求。
极客教程