经常有人问Python中的单引号,双引号,三重引号的区别,其实上还是有区别的。
单引号和双引号基本上没什么区别,区别只在于下面这种情况。
>>> S1 = 'I do like "Python"' >>> print(S_01) I do like "Python" >>> S2 = "I do like "Python"" File "<stdin>", line 1 S2 = "I do like "Python"" ^ SyntaxError: invalid syntax >>> S3 = "I do like \"Python\"" >>> print(S3) I do like "Python" >>>
或者像下面这种类似情形:
>>> S4 = 'It's a dog!' File "<stdin>", line 1 S4 = 'It's a dog!' ^ SyntaxError: invalid syntax >>> S5 = 'It\'s a dog!' >>> S6 = "It\'s a dog!" >>> print(S5); print(S6) It's a dog! It's a dog!
上面的情形都是一样:如果单引号中含引号,这个时候要么用\来转译,要么用双引号; 同样道理,如果双引号里面含单引号,这个时候,要么用\来转译",要么外面用单引号,其他没任何区别。
现在说下单引号,双引号和三重引号('''string''' 或者"""string""" )的区别:
三重引号即有单引号,双引号的作用,还基本其不基本的几个功能:
1) 三重引号中,即可有单引号,又可以有双引号,无需转译!
>>> S7 = """It's a dog!""" >>> S8 = '''I do like "Python"''' >>> print(S7); print(S8) It's a dog! I do like "Python"
2) 三重引号的内容,如果未赋值给变量,其在Python中相当于多行注释!在函数中还相当于doc作用
>>> def add(x, y): '''Add two object(x, y) --> object(x + y) Return two var to one var ''' return x + y >>> print(add.__doc__) Add two object(x, y) --> object(x + y) Return two var to one var >>>
3) 三重引号还有一个好处,三重引号在多行引号方便且是所见即所得的方式,直观!
>>> print("A\tB\tC\nD\tE\tF") A B C D E F >>> print("""A B C ... D E F""") A B C D E F >>>
比如要像上面的情况,使用三重引号,就不用考虑里面的转译符,直接可以按照自己的设计得出自己想要的结果。 这一点非常方便!跟下面的情况是异曲同工之妙:
>>> print('-' * 80) -------------------------------------------------------------------------------- >>> print('--------------------------------------------------------------------------------') -------------------------------------------------------------------------------- >>>要打印80个字符的横线,如果一个个去数,无疑是很不方便,直观,这个时候使用'-' * 80,即省事又不容易出错!三重引号在处理起来具有类似作用,特别是多行字符串处理的时候,直观,方便!