Python字符串引号匹配有效性及print语句合法性的技术疑问
Python字符串引号规则答疑:两个常见问题解析
嘿,我来给你把这几个Python字符串的问题拆解明白,其实核心就是Python对字符串字面量的解析规则~
问题1:为什么字符串以单引号开头、三引号结尾是有效的?
你可能误以为第二个print语句是单引号开头+三引号结尾,但其实不是哦!Python有个很实用的语法:相邻的字符串字面量会自动拼接成一个字符串。
看这条代码:
print('This is "python" programming''') #valid
它实际是两个独立的字符串字面量挨在一起:
- 第一个是
'This is "python" programming'(单引号包裹的正常字符串) - 第二个是
''(空的单引号字符串)
Python会自动把这两个字符串拼接成一个完整的字符串,所以它是完全合法的语法,并不是你以为的“单引号开头+三引号结尾”的特殊写法~
问题2:为什么第二条print有效,但第三条、第四条无效?
咱们逐个分析每条代码的语法逻辑:
第一条(有效)
print('This is "python" programming') #valid
这是最基础的字符串用法:单引号包裹的字符串内部,可以直接使用双引号(反之亦然),不会触发语法冲突,所以完全没问题。
第二条(有效)
刚才已经解释过啦,它是两个相邻的字符串字面量自动拼接,Python会把它们合并成一个字符串处理,语法完全合规。
第三条(无效)
print(''This is "python" programming''') #Invalid
这里的问题出在开头的两个单引号:第一个单引号是字符串的起始标记,第二个单引号直接就把这个空字符串闭合了!后面的This is "python" programming就变成了没有任何引号包裹的“裸代码”,Python会把This当成一个未定义的变量,直接触发语法错误。
第四条(无效)
print('''This is "python" programming') #Invalid
这条是典型的字符串未正确闭合:开头用了三个单引号(''')来定义多行字符串,但是结尾只写了一个单引号,没有匹配上开头的三个引号,Python找不到字符串的结束标记,自然会抛出语法错误。
内容的提问来源于stack exchange,提问作者Nireekshan
相关产品推荐
相关产品推荐

