一般除錯程式的時候都比較傾向print,利用直接列印的方法作出判斷,但是print只能列印出結果,對型別無法作出判斷。例如:
a = 5 b = '5' print(a) print(b) 結果為: 5 5
對於a和b從表面看是一樣的,可能就會預設為a == b
實則a為int型別,b為string型別
再用repr看看結果:
a = 5 b = '5' print(repr(a)) print(repr(b)) 結果為: 5 '5'
對於動態的python物件來說,利用repr也是很方便的:
class OpenClass(object): def __init__(self, x, y): self.x = x self.y = y obj = OpenClass(2,3) print(obj) # 結果為:<__main__.OpenClass object at 0x101cb7390>
用repr重建物件:
class OpenClass(object): def __init__(self, x, y): self.x = x self.y = y def __repr__(self): return 'OpenClass(%d,%d)'%(self.x, self.y) obj = OpenClass(2,3) print(obj) # 結果為:OpenClass(2,3)
對於print只能列印出易於閱讀的資訊,而型別則顯示不出來
repr則顯示出型別,簡明的展示出資料資訊