经常有人问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,即省事又不容易出错!三重引号在处理起来具有类似作用,特别是多行字符串处理的时候,直观,方便!