binary = "binary"
do_not = "don't"
x = "There are %s types of people." % binary
y = "Those who know %s and those who %s." % (binary, do_not)
print "I also said: %r." % y
print "I also said: %r." % x
Run Code Online (Sandbox Code Playgroud)
这是学习Python的练习.我正在尝试理解'%r',所以我尝试了上面的两个版画.输出是
I also asid: "Those who know binary and those who don't.".
I also said: 'There are binary types of people.'.
Run Code Online (Sandbox Code Playgroud)
现在我想知道为什么这两个印刷品之间的区别是双引号和单引号?谢谢你的帮助.
该%r格式将导致使用Python中的打印repr功能.所以以下是等价的:
"%r" % my_string ? "%s" % repr(my_string)
Run Code Online (Sandbox Code Playgroud)
那么问题就变成了,为什么repr有时会使用单引号,有时会使用双引号?嗯,首先,目标repr是生成一个Python对象的表示,它也是有效的Python源代码(这不是强制性要求,但对于许多Python类型它确实有效).对于包含撇号的字符串,有多种方式来表示它:
"Don't" ? 'Don\'t'
Run Code Online (Sandbox Code Playgroud)
repr决定是"聪明的"并选择一个更容易阅读的,即使用双引号,只要它不包含双引号.在所有其他情况下,Python回退到默认的单引号.这就是为什么您会看到不同字符串的不同行为.
更相关的是,不要依赖repr(或%r)引用字符串供人类消费,为此编写自己的函数.它并不意味着它,它主要用作在调试时转储Python对象的便捷方式.
AFAIK没有明确规定你repr在弦乐时会得到什么的文件,除非eval(repr(my_string)) == my_string预期会成立.
| 归档时间: |
|
| 查看次数: |
463 次 |
| 最近记录: |