《Python工匠》第二章 数值与字符串 关键知识摘录与梳理
文章目录
- 第二章 数值与字符串 关键知识摘录与梳理
- 数值
- 浮点数精度问题
- 布尔值也是数字类型
- 字符串
- 1. 字符串常用操作
- a.遍历
- b.切片
- c.反转
- 2.字符串格式化
- 3.多个字符串拼接
- 常用且好用的字符串方法
- 4. 不常用但好用的字符串方法
- 5. 字符串与字节串
- 编程建议
第二章 数值与字符串 关键知识摘录与梳理
写到这里的是笔者觉得有用或者未掌握的知识点,一些比较基础的就不会提及。
关于数据库的操作,笔者也没有提及,因为现在普遍都使用SQLAlchemy
数值
浮点数精度问题
使用Python内置模块decima来实现高精度。
布尔值也是数字类型
Ture -> 1,False -> 0,这里插一句其他章节的内容:Python里每个类型都有对应的bool值,对于分支语句我们可以使用隐式判断。对应如下表
| 数据类型 | True | Fasle |
|---|---|---|
| 数字(Number) | 非0 | 0、None |
| 字符串 | 非空字符串(注意:" "为真) | ""空字符串 |
| 列表 | 非空 | 空列表 |
| 元组 | 非空 | 空元组 |
字符串
1. 字符串常用操作
因为字符串是有序的所以可以执行执行如下操作
a.遍历
>>> for s in "Hello,World!":
... print(s)
...
b.切片
>>> s[1:3]
'el'
c.反转
>>> s = "Hello,World!"
>>> s[::-1]
'!dlroW,olleH'
2.字符串格式化
有如下三种:
- C语言风格的%格式化语句:‘Hello,%S’%‘World’。
- 新式字符串格式化(str.format)方式(Python 2.6 新
增):“Hello, {}”.format (‘World’)。 - f-string字符串字面量格式化表达式(Python 3.6 新增):
name = ‘World’; f’Hello, {name}'。
可读性:从上到下依次提高;
2和3可以共享了同一种复杂的“字符串格式化微语言”,可以对字符串二次加工。
>>> '{:>20}'.format("HelloWorld")
' HelloWorld'
>>> f'{"HelloWorld":>20}'
' HelloWorld'
3.多个字符串拼接
有俩种方法:
- 使用
+= - 使用
''.join()
方法1和方法2一样好用,性能开销差不多!但是方法一1的可读性也不弱
常用且好用的字符串方法
有如下:
''.join(): 字符串拼接str.split(): 字符串分割.startswith():用于判断某个字符串,是否以某个字符开头
4. 不常用但好用的字符串方法
有如下:
str.isdigit(): 用于判断某个字符串是否只含有数字。str.partition(sep): 是按照分隔符 sep 切分字符串,返回一个包含三个成员的元组:(part_before, sep, part_after)。str.tanslate(): 一次性替换多个字符。str.lower():将字符串的大写替换为小写。str.upper(): 将字符串的小写替换为大写。
>>> s = '明明是中文,却使用了英文标点.'
>>> table = s.maketrans(',.', ',。')
>>> s.translate(table)
'明明是中文,却使用了英文标点。'
5. 字符串与字节串
广义字符串分为俩类:
- 字符串(str): 给人看的
- 字节串(bytes): 有时也称"二进制字符串",给机器看的
字符串编码就会变成字节串,而字节串解码会变成字符串。str.encode()=>bytes bytes.decode()=>str
编程建议
- 使用常量或枚举类型来代替数字字面
- 不必预计算字面量表达式: 都是相同的 二进制字节码文件
- 无穷大(
float("inf"))和无穷小(float("-inf")): 用于 处理边界逻辑, 例如需要按照大小 排序 - 改善超长字符串可读性: 用括号包起来;删除自带行缩进:
textwrap 的 dedent方法 r开头的方法:如与str.split()取反序的str.rsplit()
s = ("This is the first line of a long string, "
"this is the second line")
# 如果字符串出现在函数参数等位置,可以省略一层括号
def main():
logger.info("There is something really bad happened during the
process. "
"Please contact your administrator.")
from textwrap import dedent
def main():
if user.is_active:
message = dedent("""\
Welcome, today's movie list:
- Jaw (1975)
- The Shining (1980)
- Saw (2004)""")
