一、repr是什麼?
在Python中,repr是一個內置函數,用於返回一個對象的「官方」字符串表示形式。具體而言,它返回一個可以通過eval()或exec()函數進行求值的字符串。因此,它提供了一種簡單的、可逆的將Python對象轉換為字符串的方式。
例如,對於數字3,其repr表示為字符串’3’。對於列表[1, 2, 3],其repr表示為字符串'[1, 2, 3]’。
二、repr和str的區別是什麼?
雖然repr和str都可以將Python對象轉換為字符串,但它們的用途有所不同。
str函數返回一個可讀性良好的字符串,這個字符串旨在為最終用戶提供信息。例如,對於數字3,其str表示為字符串’3’,對於列表[1, 2, 3],其str表示為字符串'[1, 2, 3]’。
repr函數則返回一個可以被Python解析器識別的字符串表示形式,這個字符串旨在為開發人員提供信息。例如,對於數字3,其repr表示為字符串’3’,對於列表[1, 2, 3],其repr表示為字符串'[1, 2, 3]’。
三、repr如何使用?
repr函數接受一個Python對象作為參數,並返回該對象的字符串表示形式。
num = 3
lst = [1, 2, 3]
print(repr(num)) # 輸出'3'
print(repr(lst)) # 輸出'[1, 2, 3]'
它還可以用於在調試時輸出中間結果,以便更好地理解程序的執行情況。例如,下面的代碼在計算過程中輸出了每個步驟的字符串表示形式:
x = 2
y = 3
z = x * y + x ** y
print(repr(x), repr(y), repr(x * y), repr(x ** y), repr(z)) # 輸出'2', '3', '6', '8', '14'
四、repr的示例應用
1.將Python對象轉換成可執行的字符串
使用repr可以將Python對象轉換成一個可以直接在代碼中執行的字符串。下面的代碼定義了一個名為calculate的函數,接受一個數值列表,計算列表中所有數字的平方和,並返回該和:
def calculate(nums):
expression = ' + '.join([f'{num} ** 2' for num in nums])
return eval(expression)
nums = [1, 2, 3, 4]
expression_str = repr(nums)
result = eval(f'calculate({expression_str})')
print(result) # 輸出30
2.自定義類的repr輸出
在自定義類中,可以通過實現__repr__方法來控制對象的repr輸出。__repr__方法應返回一個字符串,表示該對象的可執行的字符串表示形式。
例如,下面的代碼定義了一個名為Person的類,其中__repr__方法返回該對象的姓名和年齡:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f"Person('{self.name}', {self.age})"
person = Person('Tom', 25)
print(repr(person)) # 輸出"Person('Tom', 25)"
3.查看對象的內部結構
在調試時,可以使用repr查看對象的內部結構,以便更好地理解代碼的執行情況。例如,下面的代碼創建了一個包含兩個元素的元組,其中每個元素都是一個嵌套的字典:
person1 = {'name': 'Tom', 'age': 25}
person2 = {'name': 'Kate', 'age': 30}
members = (person1, person2)
print(repr(members)) # 輸出"({'name': 'Tom', 'age': 25}, {'name': 'Kate', 'age': 30})"
四、小結
本文介紹了Python內置函數repr的用法和作用。它提供了一種簡單的、可逆的將Python對象轉換為字符串的方式,可用於調試、轉換成可執行的字符串和查看對象的內部結構等方面。與str函數不同,repr函數返回對象的可執行字符串表示形式,更適合開發人員使用。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/194312.html