repr与str和eval 我就是我 2021-06-24 16:10 395阅读 0赞 先来看几个列子 >>> a = "777" >>> repr(a) "'777'" >>> eval(repr(a)) # 还是原来的类型 '777' >>> eval(str(a)) # 不是原来的类型 777 >>> type(eval(str(a))) <type 'int'> >>> class A(object): ... def a(): ... a = 1 >>> b = A() >>> repr(b) '<__main__.A object at 0x10a12d150>' >>> >>> str(b) '<__main__.A object at 0x10a12d150>' >>> repr(b) == str(b) # 两个函数转成字符串的值是相等的 True >>> eval(repr(b)) # 报错了 Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<string>", line 1 <__main__.A object at 0x10a12d150> ^ SyntaxError: invalid syntax >>> eval('A()') <__main__.A object at 0x10a0d2b10> 总结: repr:将对象转化成字符串;python的**基本数据类型**做为参数时,可以和eval函数来回转化;非基本类型就不能来回转化了。 str: 将对象转化成字符串;即使参数的类型是**基本类型**,也不一定能够来回转化;非基本类型也不能来回转化。 eval:将字符串转化成对象
还没有评论,来说两句吧...