【发布时间】:2019-09-18 11:58:23
【问题描述】:
在 Python 3 中,大多数时候,repr(repr(obj)) 的结果将是用单引号括起来的 repr(obj)。但是当 obj 是一个非空映射代理时 repr(repr(obj)) 被双引号括起来。为什么?
这是在 Wing IDE 101 上运行 Python 3.7 的 Windows 10 服务器。
mappingproxy = type(object.__dict__)
#Single quotes for undefined mapping proxies
print(repr("mappingproxy({})"))
'mappingproxy({})'
#Double quotes for defined mapping proxies
print(repr(repr(object.__dict__)))
<<< "mappingproxy({...})"
#For custom empty mapping proxies...
print(repr(repr(mappingproxy({}))))
<<< 'mappingproxy({})'
#...single, at least for ones evaluating to False
#For mapping proxies evaluating to True...
print(repr(repr(mappingproxy({'a':1, 'b':2}))))
<<< "mappingproxy({'a': 1, 'b': 2})"
#...double
#For non-existant non-empty ones...
print(repr("mappingproxy({'a':1})"))
<<< "mappingproxy({'a':1})"
#...double
#Why is that?
打印语句的结果以"<<<" 开头。
顺便说一句,我想我可以推导出一个空的映射代理表示,其表示用单引号括起来。
【问题讨论】:
标签: python python-3.x