Python repr, str, eval 使用小记 及 str 和 repr的区别

>>> s = '1+2'
>>> x = eval(s) #把引号剥离一次,就变成了运算1+2
>>> x
3
>>> ss = str(s) #把字符串 s 再次使用 str 函数, 不产生变化
>>> ss
'1+2'
>>> rr = repr(s) #把 s 使用 repr,会在外面再套上一个引号
>>> rr
"'1+2'"
>>> eval(ss) #经过 str 过的 s 还是可以通过 eval 剥离,并进行运算
3
>>> eval(rr) #经过 repr 的 s 由于套着两层引号,所以一次只能去掉一层引号, 仍然还是字符串

'1+2'
>>> rrr = repr(rr)#把带两层的引号的 rr继续套引号,变成3层
>>> rrr
'"\'1+2\'"'
>>> rrrr = repr(rrr) #变成4层
>>> rrrr
'\'"\\\'1+2\\\'"\''
>>> ss = str(s)
>>> ss
'1+2'
>>> sss =str(ss) #s使用多少层 str 仍然无动于衷, 只会加一层
>>> sss
'1+2'
>>> x = eval(rrrr) #现在用 eval 对 repr 套加的引号一层层剥离
>>> x
'"\'1+2\'"'
>>> xx = eval(x)
>>> xx
"'1+2'"
>>> xxx = eval(xx)
>>> xxx
'1+2'
>>> xxxx = eval(xxx) #剥完最后一层引号,就可以运算了
>>> xxxx
3
>>>

posted @ 2018-03-24 10:00  edwardgui  阅读(220)  评论(0编辑  收藏  举报