在《Python核心编程(第二版)》P40第一次遇到引号问题,但和反斜杠(\)混在一起,且书本例子不多,说的不够清楚,故给出关于反斜杠的一些规范。以下内容配合实操会更有体验。
单引号('),双引号("),三单引号('''),三双引号(""")。我们通过下面第一点把4种引号简化成2种引号。
(一)单引号和双引号区别在哪里?或者说三单引号和三双引号区别在哪里?
暂时发现它们间只有一个区别,引号包括下的字符串不能含有该引号。比如:
print 'I like 'python'' #最右是两个单引号哈
或者print "There is a "letter" for you"
或者print "There is a "letter for you" #字符串里仅有一个双引号
或者print '''There is a '''letter''' for you'''
以上四个print语句都是有语法错误的,好好体会下,它们正是犯了“引号包括下的字符串不能含有该引号”的原则。
如果要正确输出且不改变字符串,那相应要改成:
print "I like 'python'" #最右是一个单引号和一个双引号哦哈
或者print 'There is a "letter" for you'
或者print 'There is a "letter for you' #字符串里仅有一个双引号
或者print """There is a '''letter''' for you"""
如果字符串里没有单引号或者双引号或者三单引号或者三双引号呢?那你用哪个都行!
还有个容易犯错的例子,如:print '''I like 'python'''' #最右是一个单引号和一个三单引号
即使没有违反以上原则,但由于最右的单引号和三单引号连在一起,所以也会语法错误,最好在它们间空格,就不会出错了,如下:
print '''I like 'python' '''
通过上面第一点我们已经把引号简化了,所以接下来就讨论单引号和三单引号的差别(双引号和三双引号亦然)。
(二)单引号能做到的,三单引号也能做到;但三单引号还有一些单引号做不到的功能。
既然单引号能做到的,三单引号也能做到,那为什么还要保留单引号呢?亲,单引号输入效率高嘛。
那哪些是三单引号独有的呢?
三单引号可以跨多行,比如:
print '''hi there, this is a gift for you
wish you grow
safely and happily'''
输入以上语句,解释器会输出如下:
hi there, this is a gift for you
wish you grow
safely and happily
其实三单引号就相当于在每个语句的末尾加上\n,所以以上输入相当于:
print '''hi there, this is a gift for you\nwish you grow\nsafely and happily'''
当然,print 'hi there, this is a gift for you\nwish you grow\nsafely and happily' 也会输出同样结果,但
print 'hi there, this is a gift for you
wish you grow
safely and happily'
就会报错,因为单引号不能跨多行哈
继续尝试的话,比如输入:
print '''hi there, this is a gift for you\n
wish you grow\n
safely and happily'''
则输出:
hi there, this is a gift for you
wish you grow
safely and happily
(每两行间有个空行,因为你自己加上了\n,三单引号自动添加\n,就相当于有两个\n\n啦)
这里又会延伸出一个问题,比如:
print 'hi there, this is a gift for you\ #最右多了个反斜杠(\)
wish you grow\ #最右多了个反斜杠(\)
safely and happily'
这样是可以的,反斜杠转义enter,但是输出结果是一行而不是三行哦,输出如下:
hi there, this is a gift for youwish you growsafely and happily
所以当一行语句过长时就可以用反斜杠(\)
以上内容看起来好像很多,但按照例子敲下来好好体验,很容易掌握的哦