repr除錯python程式

Tynam.Yang發表於2018-03-29

一般除錯程式的時候都比較傾向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則顯示出型別,簡明的展示出資料資訊

相關文章