Python中五个单引号包裹文本的输出异常问题
Python中五个单引号包裹文本的输出异常问题
嘿,这个问题乍一看挺绕的,我来给你拆解清楚为什么会出现这种看似奇怪的输出~
首先得回忆Python里单引号字符串的几个关键规则:
- 第一种是用单个单引号
'...'包裹的普通字符串,里面要是想放单引号得转义; - 第二种是用三个连续单引号
'''...'''包裹的多行字符串,这种字符串里可以直接写单个单引号,完全不用转义; - 还有个容易被忽略的小细节:如果多个字符串字面量紧挨着写(中间没有任何运算符),Python会自动把它们拼接成一个字符串,比如
'hello''world'就等于'helloworld'。
现在来看你的代码h = '''''i''''',我们一步步捋解析过程:
- 解析器从左到右扫的时候,会优先匹配最长的有效引号起始序列——也就是前三个连续的单引号
''',这代表一个多行字符串的开始; - 接下来的两个单引号
'',因为处于多行字符串内部,会直接被当作字符串内容保留下来; - 然后是字符
i,自然也加入到字符串内容里; - 之后解析器要找多行字符串的结束标记:三个连续的单引号。如果你的代码里后面是三个单引号的话,正好在这里闭合多行字符串,最终
h的内容就是''i,打印出来就是你看到的结果。
哦对了,要是你确实是前后各写了五个单引号,那理论上代码会报错(因为最后剩两个没闭合的单引号),所以大概率是输入时的小失误,后面的五个单引号其实是三个~
备注:内容来源于stack exchange,提问作者dadi007
相关产品推荐
相关产品推荐

