Table of Contents
Python中的字符串
- python中的字符串是由引号以及引号包括的内容组成的。
- 「引号」包括单引号、双引号和三引号。
- 用了某种引号来标志字符串,且字符串内容中也出现了这个引号的时候,需要将内容中的这些同类型引号进行「转义」
字符串样例如下:
1'这一条以单引号包裹内容的字符串' 2"而这一条以双引号包裹内容的字符串" 3""" 4这是一条三引号包裹内容的字符串 5三引号包裹的内容可以是分段的形式 6在程序的眼中,这种字符串的各行之间是存在「换行符」的 7""" 8 9conten = """这里我们将字符串内容赋给某一个变量。或者说,我们定义了一个变量,变量的类型是字符串,并且指定了字符串的内容""" 10 11content_with_quote = "这个字符串包含双引号\",需要进行转义" 12
三种字符串之间的关系
不管用哪一种引号,只要多个字符串的内容相同,那么这些字符串在程序眼中就是相等的。 样例如下:
1"""检查三个字符串是否相等""" 2single_quote = 'hello world' 3double_quote = "hello world" 4trible_quote = """hello world""" 5print(single_quote == double_quote == trible_quote) 6# 输出结果为: True 7 8""" 9当三引号的内容为多行时,是额外带有换行符的, 10所以跟其他字符串不一样 11""" 12single_quote = 'hello world' 13double_quote = "hello world" 14trible_quote = """hello 15world""" 16 17print(single_quote == double_quote) # 输出为: True 18print(single_quote == trible_quote) # 输出为: False 19 20equivalent = "hello \nworld" # 将三引号内容等价表示成双引号形式 21print(equivalent == trible_quote) # 输出为: True 22
字符串的特点
- 字符串可以看成是一组字符组成的列表的另一种表示形式。
- 比如
['a', 'b', 'c', 'd'] 约等于 'abcd'
- 通过这一点我们可以记住:字符串跟列表一样是可以迭代的对象。或者说,列表的大部分操作,在字符串中同样适用。
- 比如
- 加法运算符:
'A' + 'B' 得到 'AB'
- 循环:
for char in "ABCD"
,则char
的值将会是'A'
,'B'
,'C'
,'D'
, - 字符串跟元组一样是不可变类型,要得到内容不一样的字符串需要生成新的字符串
- python2.5之后的版本,对于拼接字符串做了优化,不会每次生成新的字符串然后复制内容,而是直接扩展内存空间的大小。不用担心字符串拼接使得程序复杂度过大。
- 各种常用的字符串操作,可以通过dir()查看字符串的内置方法,以及help()查看具体方法的适用说明。
- 在字符串的内容中使用某个变量的值,推荐使用
f-string
,形如f"不变的内容, {变量的名称来使用其值}"
。或者使用内置方法.format()
。
字符串的使用场景
字符串在现实世界对应的是文本
,所以使用文本的场景,就是字符串的使用场景。比如:
- 日志
- 文本/文字数据
- 输入输出
- 注释:模块说明、类说明、函数说明等等
- 不要用pass,而是用字符串来说明代码块的含义或作用
比如:我们可以看到python常用的网络请求库requests
的自定义异常类型模块requests.exceptions
有如下模块说明、类说明和函数说明
1"""
2requests.exceptions
3~~~~~~~~~~~~~~~~~~~
4
5This module contains the set of Requests' exceptions.
6"""
7from urllib3.exceptions import HTTPError as BaseHTTPError
8
9
10class RequestException(IOError):
11 """There was an ambiguous exception that occurred while handling your
12 request.
13 """
14
15 def __init__(self, *args, **kwargs):
16 """Initialize RequestException with `request` and `response` objects."""
17 response = kwargs.pop('response', None)
18 self.response = response
19 self.request = kwargs.pop('request', None)
20...
21
22
23class RequestsDependencyWarning(RequestsWarning):
24 """An imported dependency doesn't match the expected version range."""
我们可以注意到RequestsDependencyWarning
的定义没有写成以下错误形式
1class RequestsDependencyWarning(RequestsWarning):
2 pass
以后我们再谈到代码坏味道的时候,会知道看到这里的pass
就知道这是一个有坏味道的代码,需要改成requests.exceptions
中的易于阅读和理解的形式。
附录: 常见转义字符
转义字符 | 含义 |
---|---|
\\ | 表示字面含义上的单个斜杆, 即\ |
\' | 单引号 |
\" | 双引号 |
\n | 换行 |
\t | 横向制表符,即键盘上的Tab键 |
\b | 退格 |
\v | 纵向制表符 |
好书推荐:
好课推荐:
写文不易,如果对你有帮助的话,来一波点赞、收藏、关注吧~👇