hello = "Hello word! This is Spring \"demo\" !"
print(hello)

quote = "This is a single quote test \'!"
print(quote)

# 长字符串
# 前面介绍 Python 多行注释时，提到使用三个引号（单引号、双引号都行）来包含多行注释内容，其实这是长字符串的写法，只是由于在长字符串中
# 可以放置任何内容，包括放置单引号、双引号都可以，如果所定义的长字符串没有赋值给任何变量，那么这个字符串就相当于被解释器忽略了，也就
# 相当于注释掉了。
s = '''"Let's go fishing", said Mary.
"OK, Let's go", said her brother.
they walked to a lake'''

# 长字符串引号或者双引号不用转义
# 三个引号定义了长字符串，该长字符串中既可包含单引号，也可包含双引号
# 当程序中有大段文本内容要定义成字符串时，优先推荐使用长字符串形式，因为这种形式非常强大，可以让字符串中包含任何内容，既可包含单引号，
# 也可包含双引号
print(s)

# Python原始字符串
# 由于字符串中的反斜线都有特殊的作用，因此当字符串中包含反斜线时，就需要使用转义字符 \ 对字符串中包含的每个 '\' 进行转义。
# 比如说，我们要写一个关于 Windows 路径 G:\publish\codes\02\2.4 这样的字符串，如果在 Python 程序中直接这样写肯定是不行的，需要使用 \
# 转义字符，对字符串中每个 '\' 进行转义，即写成 G:\\publish\\codes\\02\\2.4 这种形式才行。
# 有没有觉得这种写法很啰嗦，有没有更好的解决办法呢？答案是肯定的，借助于原始字符串可以很好地解决这个问题。
# 原始字符串以“r”开头，它不会把反斜线当成特殊字符。因此，上面的 Windows 路径可直接写成如下这种形式：
s1 = r'G:\publish\codes\02\2.4'
print(s1)

# 如果原始字符串中包含引号，程序同样需要对引号进行转义（否则 Python 同样无法对字符串的引号精确配对），但此时用于转义的反斜线会变成字符串
# 的一部分。
# 原始字符串包含的引号，同样需要转义。此时用于转义的反斜线会变成字符串的一部分。
s2 = r"\"Let's go\", said Charlie"
print(s2)

s3 = r'"Let\'s go", said Charlie'
print(s3)
