「Python|数据结构」如何用好我们离不开的字符串?

本文主要介绍python原生数据结构字符串的特点以及使用场景

Python中的字符串

  • python中的字符串是由引号以及引号包括的内容组成的。
  • 「引号」包括单引号、双引号和三引号。
  • 用了某种引号来标志字符串,且字符串内容中也出现了这个引号的时候,需要将内容中的这些同类型引号进行「转义」

字符串样例如下:

'这一条以单引号包裹内容的字符串'
"而这一条以双引号包裹内容的字符串"
"""
这是一条三引号包裹内容的字符串
三引号包裹的内容可以是分段的形式
在程序的眼中,这种字符串的各行之间是存在「换行符」的
"""

conten = """这里我们将字符串内容赋给某一个变量。或者说,我们定义了一个变量,变量的类型是字符串,并且指定了字符串的内容"""

content_with_quote = "这个字符串包含双引号\",需要进行转义"

三种字符串之间的关系

不管用哪一种引号,只要多个字符串的内容相同,那么这些字符串在程序眼中就是相等的。
样例如下:

"""检查三个字符串是否相等"""
single_quote = 'hello world'
double_quote = "hello world"
trible_quote = """hello world"""
print(single_quote == double_quote == trible_quote)
# 输出结果为: True

"""
当三引号的内容为多行时,是额外带有换行符的,
所以跟其他字符串不一样
"""
single_quote = 'hello world'
double_quote = "hello world"
trible_quote = """hello 
world"""

print(single_quote == double_quote) # 输出为: True
print(single_quote == trible_quote) # 输出为: False

equivalent = "hello \nworld" # 将三引号内容等价表示成双引号形式
print(equivalent == trible_quote) # 输出为: True

字符串的特点

  • 字符串可以看成是一组字符组成的列表的另一种表示形式。
    • 比如['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有如下模块说明、类说明和函数说明

"""
requests.exceptions
~~~~~~~~~~~~~~~~~~~

This module contains the set of Requests' exceptions.
"""
from urllib3.exceptions import HTTPError as BaseHTTPError


class RequestException(IOError):
    """There was an ambiguous exception that occurred while handling your
    request.
    """

    def __init__(self, *args, **kwargs):
        """Initialize RequestException with `request` and `response` objects."""
        response = kwargs.pop('response', None)
        self.response = response
        self.request = kwargs.pop('request', None)
...


class RequestsDependencyWarning(RequestsWarning):
    """An imported dependency doesn't match the expected version range."""

我们可以注意到RequestsDependencyWarning的定义没有写成以下错误形式

class RequestsDependencyWarning(RequestsWarning):
    pass

以后我们再谈到代码坏味道的时候,会知道看到这里的pass就知道这是一个有坏味道的代码,需要改成requests.exceptions中的易于阅读和理解的形式。

附录: 常见转义字符

转义字符含义
\\表示字面含义上的单个斜杆, 即\
\'单引号
\"双引号
\n换行
\t横向制表符,即键盘上的Tab键
\b退格
\v纵向制表符

好书推荐:

好课推荐:

写文不易,如果对你有帮助的话,来一波点赞、收藏、关注吧~👇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明仔的阳光午后

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值